我一直在写一种web服务器(没有任何SQL,解释语言)。所以,一个相当严肃的人看了它,他说:“简单地用DDoSing.撞它没什么问题。”我同意他的意见但是..。
这就是我想问的问题:保护的哪一部分应该直接写在服务器的代码中。我的意思是,我不尝试写一个网络过滤器(有一些专门的程序,由专业的安全专家编写,如netfilter/iptables等等),我只是尝试编写保护良好的web服务器。
那么,什么样的网络攻击应该保护,哪些不应该在网络服务器内?
(首先,我应该做缓冲过载保护.这就是我现在所能想象的.
发布于 2010-01-30 20:11:06
有缓冲区溢出。如果您使用的是编译语言和低级数据类型,这总是有问题的。你需要从你的客户那里承担最坏的事情。如果有人向您发送了一个1MB的URL,而您只分配了2k (而没有检查长度),那就是溢出。一个狡猾的家伙可以用可执行代码覆盖你的堆栈,并“拥有”你的服务器。
有DDoS攻击。连接速率限制将保持盒子的活力,但它似乎仍在下降。如果您没有足够快地清理陈旧的连接,这是一个可靠的方法来耗尽连接。如果您没有主动检查可用的套接字数量,并且假设“无穷大”是可用的,那么这将是一个问题。至少需要检查错误并适当地处理它。
基本的资源意识。我是否有足够的RAM、插座手柄等来打开这个连接?很多事情,但是如果你是防御性的,那么你就不会有太多的问题。另外,如果您正在为每一个新连接生成一个新线程,请小心。它们也不是无限的。
https://serverfault.com/questions/108229
复制相似问题