gpt4 book ai didi

sockets - UDP连接和安全性

转载 作者:行者123 更新时间:2023-12-03 11:52:03 24 4
gpt4 key购买 nike

TCP的面向连接的语义表明,套接字一次只能连接到一个端点。但是,使用UDP,单个打开的套接字就可以向/从任意数量的端点发送/接收数据报。我的理解是,大多数操作系统(至少Linux和Windows)会在调用sendto时自动将临时端口自动分配给UDP套接字。

我的问题是:使用UDP时,就安全性而言,编写可能一次将数据报发送到多个远程端点的应用程序时,最佳实践是什么?在将数据报发送到另一个远程端点之前,套接字应该“关闭”并重新打开每个套接字吗?

例如,考虑需要解析查询的DNS服务器。在递归解析主机名时,DNS服务器可能需要将数据报发送到许多不同的远程端点-即首先,它必须从某个根服务器发送数据报/从某个根服务器发送/接收数据报,然后再从TLD服务器发送/接收数据报,依此类推。在这种情况下,向所有这些不同的服务器发送/接收数据报时,DNS服务器是否应该重用相同的套接字/临时端口?还是在发送到其他服务器之前关闭/重新打开套接字更好?这里是否有任何安全隐患?

最佳答案

取决于“安全”的含义以及您愿意保护数据免受窃听,损坏,攻击,劫持等的程度。每个 session 通常使用不同的套接字端口通常不会受到损害-如果您愿意的话,调试会更容易需要启动wireshark找出正在发生的事情。

我这样看。如果对所有套接字 session 使用相同的端口,或者对其他端口使用相同的端口,则没有区别。甚至使用TCP还是UDP都没有关系。底线是确定的黑客可以窃听和/或劫持正在交换的消息。您愿意走多远的距离来防止这些类型的攻击?

如果您只是想避免仅因选择先前使用的端口而发生的散乱 session 而造成临时数据损坏,则使用其他端口可能会有所帮助。但是,每条消息中用于标识 session 的事务ID总是更好。根据交易ID(而不是其到达的地址)验证传入的消息。

是否想一直进行端到端的加密,完整性检查和身份验证?然后DTLS可能是一个很好的起点。

关于sockets - UDP连接和安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29113671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com