boy*_*ycy 2 networking network-programming
方案:2个网络设备,每个在单独的专用LAN上。局域网通过公共互联网连接。
网络A上的设备正在套接字上侦听;网络防火墙具有NAT端口转发设置,可以从网络B的端口范围进行外部访问。
网络B上的设备建立到网络A的传出连接以连接到侦听套接字。
短期连接的脆弱性是否存在于数据传输中,然后在完成时被断开(例如几秒钟),以及采用保持活动机制并在断开时重新连接(小时,天等)的持久连接是否存在差异?
实际建立连接的安全性不是我的问题。
客户端将维持与服务器的持久连接
不存在这样的东西。
每个连接-不管应该持续多长时间-最终都将断开连接。断开连接可能需要几秒钟的时间,也可能需要几个世纪,但是最终将断开连接。从永久意义上讲,没有什么是“持久的”。
没有所谓的“保持活动机制”。它会断开连接。
“假设服务器在连接时对客户端进行身份验证”。不能这么认为。那就是漏洞。除非您具有安全套接字层(SSL)来确保TCP / IP通信本身是安全的。如果您要使用SSL,为什么还要搞混“保持活动”?
断开连接后,如何重新连接?您如何信任连接?
方案一:拒绝服务。
坏家伙正在探测您的套接字,以等待其接受连接。
您的“持久”连接断开。(要么客户端崩溃,要么您崩溃,或者网络路由基础架构崩溃。没关系。套接字已死。必须重新连接。)
坏家伙首先获得您的监听套接字。他们欺骗了IP地址,而您认为他们是客户端。他们在-假扮客户。
客户端主机尝试建立连接,您拒绝连接,表示它们已经连接。
确实,这就是人们发明和使用SSL 的确切原因。
基于此,您可以构想一个启用DNS的方案,该方案将使Bad Guys(a)建立连接,然后(b)调整DNS条目以使它们接收针对您的连接。现在他们在中间。理想情况下,DNS安全可以阻止这种情况,但是它取决于客户端的配置。他们可能对DNS黑客开放,谁知道呢?
关键是这个。
不要指望持久的连接
它不存在。一切都断开并重新连接。这就是为什么我们有SSL。
客户端可以简单地重新连接,服务器必须以适当的错误响应用户请求。
假。客户端不能“简单地”重新连接。任何人都可以连接。实际上,您必须假设“每个人”都在尝试连接并且将击败批准的客户端。
为了确保它是批准的客户,您必须交换凭据。本质上实现SSL。不要实现自己的SSL。使用现有的SSL。
他们将不得不闯入一个交换站点吗?
仅在电影中。在现实世界中,我们使用数据包嗅探器。