我正在写一个类似于omegle的小应用程序。我有一个用Java编写的http服务器和一个html文档的客户端。主要的通信方式是http请求(长轮询)。
我通过使用https协议实现了某种安全性,并且每个连接到服务器的客户端都有一个securityid。当客户端连接时,服务器会为它提供一个securityid,客户端在需要请求时必须始终发回该安全ID。
我害怕这里中间人的攻击,你有什么建议我可以保护这个应用免受这种攻击。
请注意,此应用程序是出于理论目的而构建的,它不会出于实际原因而使用,因此您的解决方案不一定是实用的。
答案 0 :(得分:3)
HTTPS不仅进行加密,还进行服务器身份验证。当客户端连接时,服务器会显示其域具有有效且可信任的证书。这个证书不能简单地被中间人欺骗或重播。
答案 1 :(得分:1)
简单地启用HTTPS还不够好,因为网络带来了太多复杂性。
首先,请确保在Cookie上设置安全标记,否则可能会被盗。
确保用户仅通过在地址栏中键入https://<yourdomain>
来访问网站也是一个好主意,这是确保使用有效证书进行HTTPS会话的唯一方法。当您键入https://<yourdomain>
时,除非服务器为<yourdomain>
提供有效证书,否则浏览器将拒绝您访问该网站。
如果您只是在前面没有https://键入<yourdomain>
,浏览器就不会关心会发生什么。这有两个含义,我可以想到我的头脑:
攻击者重定向到某个类似名称的unicode域(即:看起来相同但具有不同的二进制字符串,因此是一个不同的域)然后攻击者为该域提供有效证书(因为他拥有它,用户可能不会注意到这一点......
攻击者可以模拟服务器但没有HTTPS,他会建立自己与真实服务器的安全连接,成为您和服务器之间的明文代理,他现在可以捕获所有流量并做任何他想做的事情因为他拥有你的会话。