青青子衿, 悠悠我心, 但为君故, 沉吟至今
« DigitalGlobe发布南非世界杯十大场馆卫星地图Firefox书签同步工具Xmarks »

使用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



  除非注明,月光博客文章均为原创,转载请以链接形式标明本文地址

  本文地址:http://www.williamlong.info/archives/2210.html
  • 文章排行:
  • 1.阿飞
  • 使用代理服务器提交重要信息(比如用户名和口令)时,都要选择HTTPS协议,记住这一点
  • 2010/6/15 0:38:16   支持(7)反对(2) 回复
  • 3.571free
  • 这个问题很值得思考,不过一般没去注意
  • 2010/6/15 13:30:29   支持(7)反对(3) 回复
  • 4.武汉小C
  • 久仰盛名啊~~~飘过 我也是用ZBLOG做的站,所以看到贵站在国内好友名气的哦·~我想问哈你头部的图片是怎么改的?
  • 2010/6/15 14:22:24   支持(5)反对(1) 回复
  • 6.炎龙会计博客
  • 对我这个菜鸟来说,这篇就看不懂了。
  • 2010/6/15 20:38:00   支持(10)反对(7) 回复
  • 7.zhiwei
  • 从feed里看到更新还是不及时啊,本来说今天准备抢个沙发呢,哈
  • 2010/6/15 0:07:18   支持(5)反对(3) 回复
  • 8.海南园林网
  • 海南园林网全体成员一直在学习!!!
  • 2010/6/15 0:08:55   支持(3)反对(1) 回复
  • 9.zjf
  • 看现在的趋势,全民代理还是很有希望的
  • 2010/6/15 8:04:56   支持(5)反对(3) 回复
  • 10.小楼
  • 新手过来拜读、
    想问下,文章右上角的图怎么链到标签去,标签是写文章的时候就设置、还是、、、怎么在首页的文章边也显示图、高手指教、在线等。
  • 2010/6/15 12:28:27   支持(7)反对(5) 回复
  • 11.漂博远方
  • 这篇文章不但介绍的方法,笔者还进行的深入的分析,挺不错的!
  • 2010/6/14 23:59:42   支持(5)反对(4) 回复
  • 13.hello
  • 我google reader的feed挂了,看不到内容,你们是不是也一样啊?
  • 2010/6/15 11:59:52   支持(5)反对(4) 回复
  • 14.jay
  • 能不能简单说一下如何访问一个网站a,而让监控者无法知道你访问了网站a?例如vpn+https或者ssh+https?或者根本无法实现
    lehui99 于 2010-6-17 22:18:24 回复
    VPN或ssh就可以了。https只是让没有用VPN或ssh时传输的内容不被看见,但可以知道你访问了网站a。
  • 2010/6/17 16:14:12   支持(5)反对(4) 回复
  • 15.tyr
  • 如果用SSL在线代理,在客户端和代理服务器间是加密连接的,肯定是安全的。如果在把编码的地址改成动态的,那就无法跟踪你访问的网站,就更隐蔽了。在线代理在浏览网页上还是很方便的,不用设置。
  • 2011/9/22 11:43:01   支持(7)反对(6) 回复
  • 16.宇宙弦米铺
  • 技术性文章,学习了。
  • 2010/6/14 23:14:19   支持(6)反对(6) 回复
  • 17.loveyu
  • 今天很早,不知是不是沙发!呵呵!
  • 2010/6/14 23:15:00   支持(5)反对(5) 回复
  • 18.geox
  • 现在XXX准备把移到国外的站长都赶回来,给他们继续剥削呢,建议大家都别用国内的这些垃圾空间,让他们急
  • 2010/6/15 2:28:26   支持(5)反对(5) 回复
  • 19.duzc2
  • 有一点个人见解:
    您在讲解post方法的时候用的是 带有?的地址,这只是get的向服务器传输信息用法,并不是post方法。
    post方法传输的数据时放在数据包里,不是网址里面。发送的post数据在浏览器的地址栏是看不见的。

    有些浏览器或服务器对get方法有严格的长度限制,但是用post方法只是在服务器端有很宽松的可设定的限制。
    lehui99 于 2010-6-16 13:50:11 回复
    POST只会把表单本身需要填写的数据作为POST的数据体内传输。如果表单本身的目的地址包含参数(半角问号后面的内容),那么POST仍旧会原原本本作为POST的地址传输到服务器上。
  • 2010/6/15 23:33:55   支持(2)反对(2) 回复
  • 20.垃圾GW
  • 我一般用SOCKS5代理,以前在ipfree.cn上找MACAO代理,速度很快,但现在免费的很少了。
    “AutoProxy”看了,还是不太懂。直持月光。

    大家没事,多来看看我的http://bswq.blogspot.com
    用代理才能上去。
  • 2010/6/16 22:17:15   支持(3)反对(3) 回复
  • 21.扬扬
  • 请教:很多大学给专业的数据库(比如CNKI)付费后,学生都可以在校访问那些数据库,并下载需要的资料。可是,毕业后离开学校,访问那些专业的数据库就不行了。能不能通过代理服务器实现啊??????
    RayChow 于 2010-6-15 15:54:11 回复
    那要在学校架一个代理咯
  • 2010/6/15 9:43:11   支持(4)反对(5) 回复
  • 23.PTFE
  • 还没到哪个级别,暂时还用不到。
  • 2010/6/21 18:10:05   支持(5)反对(6) 回复
  • 24.sofa
  • sofa?yes!
    闲杂人等 于 2010-6-15 12:53:02 回复
    .....
  • 2010/6/14 23:16:39   支持(2)反对(4) 回复
  • 28.nobody
  • post或get都是先建立 https连接以后再传参数, 所以可以对访问了站点什么内容是保密的, 但对访问了什么站点对中间网络来讲是不保密的.

    只要知道https是先建ssl连接以后才传参数就好了, 而文章里举的例子完全没什么意义, 像get的例子能说明什么?
    请求: GET / HTTP/1.1
    返回: HTTP/1.1 200 OK
    难道是想说这是明文传输吗? 纯粹误导啊
    lehui99 于 2010-6-24 13:16:00 回复
    请求: GET / HTTP/1.1
    返回: HTTP/1.1 200 OK
    ——不正说明了明文传输吗?哪来误导?
  • 2010/6/22 15:32:28   支持(4)反对(7) 回复

发表评论:

 请勿发送垃圾信息、广告、推广信息或链接,这样的信息将会被直接删除。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 关注新浪微博:关注新浪微博
  • 关注腾讯微博:关注腾讯微博
  • 关注认证空间:关注QQ空间
  • 通过电子邮件订阅
  • 通过QQ邮件订阅

站内搜索

热文排行


月度排行

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.
This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.