作者:@davidsky2012
由于各种原因,在国内上网,免不了要和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
……
……
我们来和没有使 用代理服务器的情况对比一下,如果没有使用代理服务器,那么我们访问 http://www.microsoft.com/ ,浏览器就会向 www.microsoft.com 这台服务器发送以下请求:
GET / HTTP/1.1
……
服务器返回:
HTTP/1.1 200 OK
……
……
我们看到,使 用代理服务器之后,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:这要取决于使用了代理服务器前后中所经过的路中的每一个节点了。即使不使用代理服务器,国内上网仍旧会面临各种人为网络故障( http://www.williamlong.info/archives/2195.html ),使用代理服务器后因为经过的路不同,所以有可能还是需要面对这些人为网络故障,也有可能不需要面对这些人为网络故障了(如果代理服务器本身特意解决了 这些故障)。
3、总结
综合上述,使用远程HTTP代理服务器的安全性和不使用代理服务器相比基本没有什么差别,我 们 面对的人为网络故障在使用了代理服务器后也有可能依然存在,也有可能减少甚至消失了。如果有人在国内提供解决了人为网络故障的代理服务器,给一些不会使用 或无法使用加密代理软件的人用,结合《如何使用代理服务器》( http://www.williamlong.info/archives/2057.html )和AutoProxy( http://autoproxy.org/ ),那么全民代理的时代说不定会到来哦。(透露一下,近期内我很可能会提供这样的代理,可能是通过家里的ADSL网络提供,也有可能在服务器上提供,敬请 关注)
我的Twitter:@davidsky2012,我的Google Reader: https://www.google.com/reader/shared/lehui99
来源:http://www.google.com/reader/item/tag:google.com,2005:reader/item/83b62f2da4b23c40
2010年6月15日星期二
2010年5月23日星期日
Google、Http 和 Https
和 Gmail 以及 Google Docs 不同,Google 首页的 https 界面不会自动出现,你需要在浏览器的地址栏输入以下 URL:
https://www.google.com/而对中国大陆用户来讲,在输入以上 URL 之前可能还要先输入以下 URL:
http://www.google.com/ncr
下面来看看 Google 的 https 界面和 http 界面之间有什么不一样。
一、Google 的 https 界面和 http 界面外观上的不同
以下是 Google 首页今天 http 界面的截图:对比前面提到的 https 界面截图,不难发现 https 界面和 http 界面在外观上的几个不同点:
1. 图标不同
为了纪念“吃豆人”(PAC-MAN) 游戏 30 周岁,Google 的 http 首页使用可以玩的“吃豆人”游戏画面作为图标,而 https 的首页则是使用含有 SSL 和 beta 字样的图标。
2. 说明文字不同
Google 的 https 页面搜索框下面有以下一行文字:
了解更多有关使用 SSL 在 Google 上进行搜索的信息。而 http 页面则没有。
3. 左上角工具栏不同
Google 的 http 界面左上角有包含网页、图片、视频等搜索选项的工具栏,而 https 页面则没有。
4. 搜索结果页面的不同
其实,Google 的 http 界面和 https 界面搜索结果的内容是一样的,不同的是,https 界面的侧边栏中没有“地图”、“图片”和“购物”这三个选项,如下图:
也就是说只有在 http 界面才能搜索“地图”、“图片”和“购物”。
二、 Google 的 https 界面和 http 界面安全级别的不同
Google https 界面和 http 界面最大的区别在于前者比后者安全,这也是 Google 为什么要开发 https 界面的原因。Google 的 http 界面采用的是 HTTP(HyperText Transfer Protocol)网络协议,即超文本传输协议。而 https 界面采用的是 HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)网络协议,即安全的超文本传输协议,可以简单理解为 HTTP 的安全版或者加密版。
通过 HTTP 网络协议访问 Google 网站,意味着你的访问记录比较容易被 Google 以外的程序干扰(例如截取你发送的信息),而通过 HTTPS 网络协议访问 Google 网站,则会避免这种干扰。当然,Google 会记录你访问它的服务的历史。
下面通过一个例子来说明 HTTPS 的重要性:
如果你的 Google 阅读器有订阅 GFW BLOG 这个博客,那么通过 HTTP 协议打开阅读器,你就可能会看到以下的错误提示:
之所以会出现错误提示,是因为伟大的防火墙过滤了含有 “GFW” 的网址。而当你把浏览器地址栏最左边的“http” 改为“https” 之后,刷新一下,那么你就会发现错误提示不见了,如下图:
由此可见 HTTPS 网络协议安全性的重要。
三、目前支持 https 协议的 Google 服务
除了 网页搜索、邮箱和文档之外,目前支持 https 协议的 Google 服务还有阅读器和日历。其他的 Google 服务以后应该都会支持通过 HTTPs 网络协议访问。附录:关于 Google https 界面的一则趣事
最早使用 https 界面的视频搜索时,发现一个奇怪的现象——可以搜索中文但是搜索不了英文。在搜索框输入“罗宾汉”,搜索结果页面如下:而在搜索框输入“Robin Hood” 时,就什么结果也没有,如下图:
不过,此文发表之前,https 界面已经可以搜索得到 “Robin Hood” 的相关视频了。
来源:精品博客
订阅:
博文 (Atom)