Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

局部 HTTPS 的安全隐患

  现在有很多网站都已经全站用上了 HTTPS,这真是极好的!但 HTTPS 是有很多坑的,所以有些网站想尝试,但又无法摆脱一些包袱,所以使用了部分页面 HTTPS 的做法。比如只针对密码相关的页面使用 HTTPS。这么做虽然也能提高一定的安全性,但依然存在各种安全隐患。

HTTP 与 HTTPS

  普通 HTTP 页面的数据传输都是明文的,也就是说如果传输过程中有人拦截就完全会暴露传输的内容。假如在公共场合搭一个 WIFI,别人连上来后打开 HTTP 网站,并输入密码。这一系列数据交互的动作都是可以在 WIFI 的服务器上看到的。或者就算是记住密码,不用再重新输入密码,Cookie 中的 Session ID 也依然会被窃取。所以在公共的 WIFI 上我从不直接访问 HTTP 网页,至少也会连个 L2TP 的代理后再访问。
  HTTPS 就是用来解决这种问题的,它直接在传输层上让通信的数据加密以确保传输过程中数据的安全。

各种不安全

  我想 HTTPS 比 HTTP 安全大家都知道,但大部分人可能都只知其一不知其二。有很多网站都在使用局部的 HTTPS,认为只要确保密码传输安全就一切 OK,这种想法是不对的。首先一个 Session ID 泄露的问题就明摆着嘛!只对关键操作使用 HTTPS 的话,其它页面交互时的 Session ID 不依然是明文?也许我会被这么反驳「我们没用 Session」或者「我们的 Session ID 是没有价值的」。
  好的吧,我们退一步说。如果仅仅是对密码传输使用 HTTPS,那么输入密码的页面要是被注入一段表单监视的代码怎么办?在 HTTP 的传输过程中,不仅仅是偷窥,还是可以篡改的。如果表单所在的页面不是 HTTPS 传输,那么用户输入密码的框就可能是有钩子的。即使密码传输本身安全,但输入的环境不安全依然是不安全。
  既然如此,把表单所在的页面也一起做 HTTPS 了如何?好样的,又有个新的槽可以吐了。即使表单页是安全的,用户也未必会直接打开表单页。通常的操作都是先进入主页,然后点击超链接进入登录页。而主页不是 HTTPS 的话,这个超链接也可能被篡改,链接到一个钓鱼的登录页上。用户在一个网站上点开的链接一般不会去检查域名是否正确,所以这样钓鱼的成功率依然非常高。

纠结完毕

  纠结了一大圈,最终得出的结论是「只有全站采用 HTTPS 才能通信安全」。局部页面使用 HTTPS 总是无法确保的。也许那么做可以提高骗子的成本,但总体来说就是个安全隐患。所以如果有可能,我希望让所有页面都使用 HTTPS。

另一个悲伤的事实

  也许有人会问,为什么我的博客不搞 HTTPS?其实我被问过好多次,这其中有个令人悲伤的原因:「使用 HTTPS 会被墙」。

网名:
54.226.58.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^