gpt4 book ai didi

c++ - UDP 套接字 : recvfrom and receive address

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:19 25 4
gpt4 key购买 nike

BSD/POSIX 套接字 API recvfrom()调用(通过 <sys/socket.h> 头文件提供给 C 或 C++ 程序员)提供源地址“out”参数,struct sockaddr *src_addr , 它存储发送接收到的数据报的远程服务器的 IP 地址。

对于发送 UDP 数据报到某个远程端点,然后接收响应(例如 DNS 解析器)的任何应用程序,它是否被认为是必要的安全预防措施以始终确保任何接收到的数据报都来自与最后一个发送数据报相同的 IP 地址(即在之前的 sendto 调用中使用的地址?)

换句话说,如果我们调用sendto并向某个地址发送数据报,我们是否应该始终确保相应的 recvfrom调用来自相同的地址

这似乎是不可行的,因为如果远程服务器位于防火墙后面,或者是具有多个 IP 地址的分布式系统的一部分,则响应数据报可能合法地源自不同的 IP。

但是,如果我们不验证接收到的数据报来自与最后一个 sendto 中的地址相同 IP 地址call,如何防止某些攻击者拦截数据报,然后将恶意数据报发送到客户端?

最佳答案

你怎么知道收到的数据包是一个回复?通常这是使用接收到的数据包中的源地址和端口完成的。

但是,无法验证 UDP 数据包中的源地址。发件人可以放置他们想要的任何源地址。因此,只有当您信任互联网上漂浮的所有数据包时,检查才足够,这显然是不可行的。

因此您需要一些额外的机制:随机 cookie、序列号等。

关于c++ - UDP 套接字 : recvfrom and receive address,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29158103/

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