我目前正在为学校项目开发Java服务器平台。我正在使用SSL TCP套接字进行通信,而我正处于在客户端和服务器之间开发JSon协议的阶段。
我的问题是协议中的消息是否应包含唯一ID,或者是否使用SSL TCP套接字是否足以避免重复攻击。
答案 0 :(得分:1)
没有。 SSL不受重放攻击的影响
答案 1 :(得分:-1)
我相信你指的是replay attacks,它可能取决于你的协议的实施。
如果您两次收到相同的消息,您将如何处理?
想象一下,Bob会向您发送有效的合法邮件。您使用有效的合法回复进行回复。 SSL在整个会话过程中保护通道,因此没有人可以窃听网络流量并查看原始请求和/或响应。
现在想象一下,我已经破坏了Bob的网络并获得了加密流量的副本。如果我重新发送加密的消息,会发生什么?有可能,SSL可以在以后保护我,因为SSL会话将不再有效。
但是如果我在SSL会话到期之前立即重新发送消息怎么办?你会容易受到影响吗?
或者你的协议的一部分会发出一个我可以抓住的令牌(可能通过肩膀冲浪或感染Bob的计算机)?我可以再次使用那个令牌,可能来自其他地方,并假装我是鲍勃?那你的曝光是什么?
您只需要了解特定情况下的情景,并检查其发生的风险以及保护它的努力。
通常,SSL会保护频道(飞行中的数据),但您必须将协议设计为最终安全。在协议中包含随机令牌(并确保它在那里)是一种简单的方法来防止一系列不同的攻击,包括重放攻击(想想CSRF令牌)。