1

我正在写一个类似于 omegle 的小应用程序。我有一个用 Java 编写的 http 服务器和一个 html 文档的客户端。主要的通信方式是通过http请求(长轮询)。

我已经通过使用 https 协议实现了某种安全性,并且我为每个连接到服务器的客户端都有一个 securityid。当客户端连接时,服务器给它一个securityid,当客户端需要一个请求时,它必须总是发回。

我害怕这里的中间人攻击,你有什么建议我可以保护应用程序免受这种攻击吗?

请注意,此应用程序是出于理论目的而构建的,不会出于实际原因使用它,因此您的解决方案不必一定是实用的。

4

2 回答 2

3

HTTPS不仅做加密,还做服务器的认证。当客户端连接时,服务器会显示其域具有有效且可信任的证书。该证书不能简单地被中间人欺骗或重放。

于 2010-06-19T12:38:24.553 回答
1

仅仅启用 HTTPS 是不够的,因为网络带来了太多的复杂性。

一方面,请确保您在 cookie 上设置了安全标志,否则它们可能会被盗。

确保用户只能通过在地址栏中键入来访问站点也是一个好主意https://<yourdomain>,这是确保使用有效证书进行 HTTPS 会话的唯一方法。当您键入https://<yourdomain>时,浏览器将拒绝让您访问该站点,除非服务器提供了有效的证书<yourdomain>

如果你只是<yourdomain>在前面没有 https:// 输入,浏览器不会关心会发生什么。这有两个含义,我可以想到我的头顶:

  1. 攻击者重定向到具有相似名称的某个 unicode 域(即:看起来相同但具有不同的二进制字符串,因此是不同的域),然后攻击者为该域提供有效证书(因为他拥有它),用户可能不会注意到这个...

  2. 攻击者可以模拟服务器,但如果没有 HTTPS,他将自己建立与真实服务器的安全连接,并成为您和服务器之间的明文代理,他现在可以捕获您的所有流量并做任何他想做的事情,因为他拥有您的会话。

于 2010-06-19T13:17:40.937 回答