2010-06-20 38 views
5

在HTTPS安全模型中,最弱的部分是浏览器中可信CA的列表。有许多方法可以将其他CA添加到列表中,用户将信任错误的人。如何防止服务器端HTTPS man-in-middle攻击?

例如,您公司的公用计算机或PC。管理员可能会强制您信任自己颁发的CA,但使用HTTPS中继的HTTPS代理服务器可能会非常不安全。因此,即使浏览器告诉您您的SSL连接可信,他们也能够侦测到您的消息,登录名和密码。

在这种情况下,Web应用程序开发人员可以做些什么来保护用户和系统?

+1

要安装受信任的根CA证书,需要访问用户计算机。一旦你访问了一台机器,与安装证书相比,窃取数据的方法要简单得多,所以这种情况在SSL安全性的有效性方面并不真正有效。 SSL更能够防止中间人攻击,用户只需嗅探通过线路发送的流量,而无需直接访问用户计算机。 – TheCodeKing 2010-09-22 23:56:26

回答

4

作为一个Web应用程序开发人员,您可以做的事情很少。

这个问题需要进一步处理。

如果世界各地的人想要:

a。将假根CA放在某人的电脑上

b。根据该证书为您的域名签发一份证书CA

c。模仿你的网站

d。将您域的某人的本地DNS条目指向不同的IP

上述步骤都不涉及您的应用程序涉及或咨询,因此这是良好的网络管理和安全性非常重要的地方。

除此之外,也许有人有理由在他们的个人网络上进行本地化。我是谁来阻止他们?

这实质上就是企业网络代理过滤器所做的事情,它们在自己的权利范围内。

至于阻止恶意的人采取上述步骤这就需要把你的客户机管理员的东西。

+0

一些最近的问题http://stackoverflow.com/questions/19993696/is-there-any-way-to-access-ssl-certificate-details-using-javascript指向我一个可能的解决方法。这个项目https://github.com/digitalbazaar/forge可以帮助JavaScript读取SSL信息,如果CA发行者名称不匹配,可能有助于提供某种警报。 – 2014-02-18 04:49:37

1

从理论上讲,如果用户的终端被对手拥有的,你已经失去了并没有什么,你可以做些什么 - 如果推来推去,他们可以过滤掉你的对策,甚至刮和恶搞整个网站。

实际上,你可以做一些事情来让对手的工作变得更难,但是这是一场军备竞赛。您可能必须使用恶意软件针对扫描程序使用的所有相同对策 - 因为从攻击者的角度来看,您的网站会通过尝试阻止自身被覆盖而恶意行为! - 并且知道,如果你的对手足够关心,你所做的任何事情都会迅速反击。

例如,您可以打开套接字或使用JavaScript或applets中的XmlHttpRequest,但无法阻止对手更新其过滤器以去除所添加的任何内容。

通过发布多态输出或使用其他反向工程技术,您可能会获得更多里程数,因此看起来网站没有任何两次命中产生发送到浏览器的类似代码/资源。这是一个过多的工作,但如果他们想要在中间扮演一个人,那么就会让你的对手陷入谜团。