Answers
这里要明确https的作用,https是用来加密网络上传输的数据,不对数据内容做验证。
如果你的网站使用https,它能保证用户和你网站交互发送的数据不被第三方监听(如被三方使用wireshark类抓包工具抓包)并明文查看。
如支付宝官网使用https,能保证你的银行账号和密码不被泄露。https把你的个人信息加密后再网络上传输。
但是,https不会检查你发送的具体内容。它不会管你是否发的是银行账号和密码,还是sql注入数据。它只保证数据加密。
具体用户发送的数据(账号密码还是sql注入),就需要你在代码里进行检查了
HTTPS仅仅只是在传输过程中加密了。
举个例子:
A给B写信,写完邮寄给B,但是在邮寄的过程中,邮递员可能会偷偷的把信取出来看完后再放回去,收发室大爷可能也会偷偷取出来看一眼,B收到信的时候,可能在传输过程中已经被很多人看过了。如果信件中有一些银行卡账号密码什么的,可能在传输过程中已经被别人悄悄记下来了。这就是HTTP。
A和B发现了这个问题,于是他们约定了下次写信要加密,A写信的时候加密,B收到信在解密,加密解密的方法只有A和B知道。同样在寄信的过程中,邮递员、收发室大爷偷偷看了信,但是完全看不懂,信件的内容不会泄露,就安全的多。这就是HTTPS。
所以通常在浏览一般网页的时候,可能不会用HTTPS,而在用户登录需要输入密码时,会用HTTPS,因为登录肯定要传输用户名密码,不加密可能就会被别人看到。
另外,百度最近的一个重大变化就是从HTTP切换到HTTPS:
http://zhanzhang.baidu.com/wiki/383
(一篇值得一看的文章)
从此百度告别了运营商劫持。
什么是运营商劫持?
运营商会在一些流量大的网站,加上一些小广告来增加收入。有时候你打开百度,会在右下角弹出一个广告,这个广告不是百度加上的,是运营商加的。
也就像上面例子中,邮递员不但打开看了你的信件,而且在你的信件上加入小广告,让你以为是A加的。如果HTTPS加密,邮递员是无法将小广告加密放到你的信中。
如果你要访问163,不是直接到163的,需要中间有很多的服务器路由器的转发。
假设你是可信的,163.com也可信,但是中间的节点就未必。
比如
C:\Users\rita>tracert www.163.com
通过最多 30 个跃点跟踪
到 163.xdwscache.glb0.lxdns.com [220.167.14.40] 的路由:
1 5 ms 2 ms 4 ms 100.64.0.1
2 3 ms 3 ms 3 ms 100.64.0.1
3 * * * 请求超时。
4 7 ms 5 ms 7 ms 171.208.203.85
5 12 ms 8 ms 8 ms 171.208.203.146
6 15 ms 14 ms 15 ms 118.121.1.42
7 9 ms 11 ms 9 ms 118.121.1.5
8 9 ms 9 ms 9 ms 220.167.14.40
这8个节点,任何一个都可以串改你的信息和发给你的信息。
实际上运营商劫持就是这些节点中一些小子为了盈利而修改发给你的html,嵌入他的广告。
如果是https,这些节点个个都不知道你和163到底在发些啥,也没有办法改,因为秘钥(公用的私有的)在你的163之间才有。
所以,https防止的是中间节点使坏。这在我们的场景下,是非常好有价值的。