3

关于阻止对 UDP 客户端/服务器的 DoS 攻击,有哪些好的编程实践?目前唯一想到的是忽略具有错误来源的数据包,例如(使用 WinSock2):

if (oSourceAddr.sa_family == AF_INET) {
    uSourceAddr = inet_addr(oSourceAddr.sa_data);

    if (uSourceAddr == oCorrectDestAddr.sin_addr.S_un.S_addr) {
        queueBuffer.push(std::string(aBuffer));
    }
}

足够快的攻击可能会导致它在循环中阻塞——尤其是在数据包大小很小的情况下。有没有一种方法可以防止数据包从某个来源或正确来源以外的任何来源到达?我还应该注意哪些其他事项?如果解决方案已经内置到 API 中,则以代码形式进行解释将特别有用。

4

1 回答 1

6

有没有一种方法可以防止数据包从某个来源或正确来源以外的任何来源到达?

是的。只是connect()那个正确来源的套接字。然后UDP会过滤掉来自其他地址的所有数据报。请参阅man 2 connect,关于 SOCK_DGRAM 套接字的段落。

于 2013-10-30T05:02:25.883 回答