2015-04-28 60 views

回答

6

一个服务器有没有办法知道客户获得什么证书,除非客户端向服务器发送信息。

从客户端JavaScript,你今天不能检测到这种拦截; JavaScript不公开反证书的功能。它可能在网页中使用Java或Flash来检查连接到服务器时收到的证书,但是一个足够迂回的拦截器可以避免MITM与Java/Flash的连接。

相反,本机代码客户端应用程序可以检测到服务器提供了什么证书,并拒绝任何不符合预期证书的证书;这被称为certificate pinning,这是一些应用程序使用的技术。请注意,这将阻止更多的提琴手;它还会阻止通过公司检查代理(例如BlueCoat,ISA TMG等)和一些流行的消费者防病毒程序的代理(例如BitDefender)的连接。更重要的是,用户可以绕过你的证书锁定检查,如果他们喜欢;你的代码在他们的设备上运行,并且他们有能力修改你的内存中的代码去除你的证书锁定检查。在一些移动设备上,这种代码修改需要“破解”设备,但这不是不可逾越的障碍。

相关问题