我的问题是关于Java套接字的。我初始化一个新的套接字,然后通过该套接字将DataOutputStream发送到Internet上的主机。那么,发送此数据是安全的,没有人可以阅读此数据吗?
谢谢。
答案 0 :(得分:4)
如果您使用常规的Socket
,则不会,中间的一个人有可能会偷听您。您需要使用SSLSocket进行加密通信。
答案 1 :(得分:2)
详述@Kayaman的答案时,有多种方法可以拦截通过普通套接字进行的通信。
然后会有更多微妙的攻击。例如,某件事可能已经接管了DNS服务器,并导致您要与之交谈的主机名被路由到在其他IP地址上运行的假服务器。然后,伪造的服务器可以将数据包发送到真实服务器上,并使用相反的方向来处理数据包。 (这被称为“中间人”攻击。)
如果您使用SSLSocket且已建立适当的信任,则:
(请注意,除了上述警告以外,还有一些警告。但是这个答案已经足够长了。)
最后,使用DataOutputStream
(相对于Reader
)对安全性没有任何实际影响。对于具有中等黑客技能的人来说,取消二进制编码流并不是什么挑战。