Nmd*_*ery 3 c++ security udp denial-of-service winsock2
在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));
}
}
Run Code Online (Sandbox Code Playgroud)
足够快的攻击可能导致这种情况在循环中阻塞 - 特别是如果数据包大小很小.有没有办法可以防止数据包来自某个来源,或者除了正确来源之外的任何来源?我应该注意哪些其他事项?如果解决方案已内置到API中,则代码形式的解释将特别有用.
有没有办法可以防止数据包来自某个来源,或者除了正确来源之外的任何来源?
是.只是connect()到正确来源的套接字.然后UDP将过滤掉其他地址的所有数据报.请参阅man 2 connect,关于SOCK_DGRAM套接字的段落.