使用HTTP代理服務器的安全性簡評

  由於各種原因,在國內上網,免不了要和HTTP代理服務器打交道。 HTTP代理服務器分加密代理服務器和普通代理服務器。如果我們在自己的電腦上運行了某些軟件之後就能訪問之前不能訪問的網站,那麼很可能是加密代理;如果我們直接在瀏覽器中設置代理服務器,不用運行任何軟件,那麼這種類型的代理服務器就是普通代理。一般來說,如果加密代理軟件沒有問題,加密代理的安全性要好於普通代理。在這裡,本文主要還是講述普通代理的安全性。

  1、HTTP代理協議簡介

  瀏覽器和HTTP代理服務器之間是通過HTTP代理協議進行通訊的。如果我們沒有使用運行在自己的電腦上的加密代理,而是直接在瀏覽器中設置了在互聯網上的代理服務器地址,那麼瀏覽器就和代理服務器之間進行的通訊就會發送到互聯網上。代理服務器常見的請求有GET、POST和CONNECT,下面分別做介紹:

  1.1、GET

  如果我們通過代理服務器訪問某個http協議的網站網頁,那麼瀏覽器就會向HTTP代理服務器發送GET請求。比如我們通過代理服務器訪問http://www.microsoft.com/ ,那麼瀏覽器就會向HTTP代理服務器發送數據:

  GET http://www.microsoft.com/ HTTP/1.1
  ……

  之後代理服務器取得數據後把網頁返回給瀏覽器:

  HTTP/1.1 200 OK
  ……
  <html>
  ……

  我們來和沒有使用代理服務器的情況對比一下,如果沒有使用代理服務器,那麼我們訪問http://www.microsoft. com/ ,瀏覽器就會向www.microsoft.com 這台服務器發送以下請求:

  GET / HTTP/1.1
  ……

  服務器返回:

  HTTP/1.1 200 OK
  ……
  <html>
  ……

  我們看到,使用代理服務器之後,GET請求和返回的格式基本沒有變化,是否使用代理服務器的安全性上基本沒有差異。

  1.2、POST

  當我們在使用http協議的網站上提交表單時(比如網站上的用戶登陸表單,填寫好用戶名和口令,然後點登陸,就把表單提交到服務器了),如果表單類型是POST(大多數表單類型都為POST,不過搜索引擎的搜索表單好像都是GET類型的),那麼瀏覽器就會向代理服務器發送POST請求。比如在http://www.williamlong.info/archives/2209.html 中進行評論,數據會提交到http://www.williamlong.info/cmd.asp?act=cmt&key=a666b083 ,如果我們使用HTTP代理服務器,以下請求會發送到代理服務器:

  POST http://www.williamlong.info/cmd.asp?act=cmt&key=a666b083 HTTP/1.1
  … …
  [提交的評論數據]

  如果沒有使用代理服務器,那麼以下POST請求直接發送到www.williamlong.info 服務器:

  POST /cmd. asp?act=cmt&key=a666b083 HTTP/1.1
  ……
  [提交的評論數據]

  使用代理服務器和沒有使用代理服務器的返回結果也是基本一致的。所以POST請求在是否使用代理服務器的安全性上也是基本沒有差異的。

  1.3、CONNECT

  當我們訪問https協議的網站時,瀏覽器會向代理服務器發送CONNECT請求。比如我們訪問https://mail.google.com/mail/?shva=1#inbox 時,瀏覽器會向代理服務器發送以下請求:

  CONNECT mail.google.com:443 HTTP/ 1.0
  ……

  之後服務器返回:

  HTTP/1.1 200 Connection established
  ……

  然後瀏覽器開始向代理服務器發送加密的數據,使用的是mail.google.com 的SSL證書。代理服務器把mail.google.com 返回的加密數據原原本本的返回給瀏覽器。

  如果沒有使用代理服務器,那麼瀏覽器直接連接mail.google.com:443 ,然後開始發送和接收加密數據。

  我們看到,使用了HTTP代理服務器之後,HTTPS協議傳輸的內容仍舊是端到端加密的,HTTPS仍舊保持了傳輸的內容不被任何負責傳輸數據的設備(包括代理服務器)看到的特性。是否使用代理服務器對HTTPS協議的安全性沒有變化。

  2、深入討論

  Q:我們看到,使用了代理服務器之後,都會把需要訪問網站的域名(包括https的)發送給代理服務器,這樣如果網絡受到監視,就能知道我們在訪問什麼網站(但https協議監控不到傳輸的內容,只能知道我們訪問了這個網站),這樣是否降低了安全性?
  A:​​如果我們的網絡受到監視,所有的網絡數據包都被記錄,那麼如果不用代理服務器,瀏覽器也會首先去發送查詢域名所對應的IP的DNS請求,還會在得到IP後發送TCP連接請求到需要訪問的網站,通過網絡數據包監視一樣可以知道我們在訪問什麼網站。

  Q:有些代理服務器產品聲稱能夠記錄HTTPS傳輸的內容,是怎麼做到的呢?
  A:​​使用了SSL劫持的手段。這些代理服務器產品無一例外需要安裝對應的客戶端,一旦安裝了這些客戶端,就能控制客戶端電腦,進而安裝代理服務器自己的證書,進行SSL劫持。有些產品不需安裝客戶端,但客戶端瀏覽器訪問所有的HTTPS網站時都通不過瀏覽器的SSL證書驗證,瀏覽器都會給出證書無效的警告。

  Q:如果我們原先不能訪問某個網站,使用了代理服務器可以放問這個網站了,這個網站是http協議的,這樣訪問這個網站所有的行為在受監控的網絡環境內都會被記錄吧?
  A:​​是的。因為代理服務器不改變HTTP協議的安全性,所以所有明文傳輸的內容都能被監控系統記錄下來。所以,我們使用代理服務器提交重要信息(比如用戶名和口令)時,都要選擇HTTPS協議,在輸入用戶名和口令時需要注意瀏覽器的地址欄是不是以https開頭的。

  Q:使用了代理服務器後,網絡數據包所經過的路和沒有使用代理服務器時不同,對安全性有什麼影響呢?
  A:​​這要取決於使用了代理服務器前後中所經過的路中的每一個節點了。即使不使用代理服務器,國內上網仍舊會面臨各種人為網絡故障,使用代理服務器後因為經過的路不同,所以有可能還是需要面對這些人為網絡故障,也有可能不需要面對這些人為網絡故障了(如果代理服務器本身特意解決了這些故障)。

  3、總結

  綜合上述,使用遠程HTTP代理服務器的安全性和不使用代理服務器相比基本沒有什麼差別,我們面對的人為網絡故障在使用了代理服務器後也有可能依然存在,也有可能減少甚至消失了。如果有人在國內提供解決了人為網絡故障的代理服務器,給一些不會使用或無法使用加密代理軟件的人用,結合《如何使用代理服務器》和AutoProxy,那麼全民代理的時代說不定會到來哦。

  來源:讀者投稿,作者:Ying,作者Twitter:@davidsky2012,作者Google Reader: https://www.google.com/reader/shared/lehui99

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,文章转自月光博客

Comments are closed.