我一直在写一种networking服务器(没有任何SQL数据库,解释型语言)。 于是,一个相当认真的人看了看,他这样说道:“没有问题,只要通过DDoSing就可以使它崩溃……”。 我同意他的意见,但是…
这就是我想问的:保护的哪个部分应该直接写在服务器的代码中。 我的意思是,我不想写一个networkingfilter(这里有一些特殊的程序,由专业的安全专家编写,如netfilter / iptables等),我只是试着写一个受到良好保护的networking服务器。
那么,哪一种networking攻击防护应该不应该在networking服务器内?
(首先,我应该这样做 – 缓冲超载保护…现在我只能想象…)
那么,有缓冲区溢出。 如果您使用的是编译语言和低级数据types,这总是有问题的。 你需要承担你的客户最糟糕的。 如果有人向您发送一个1MB的URL,而您只分配了2k(并且无法检查长度),那就是溢出。 一个狡猾的家伙可以用可执行代码覆盖你的堆栈,并“拥有”你的服务器。
有DDoS攻击。 连接速率限制将保持活着的盒子,但它仍然会出现下降。 如果你没有足够快的清理陈旧的连接,那肯定会失去连接。 如果您没有主动检查套接字的可用数量,并假设“无限”是可用的,那将是一个问题。 至less需要检查错误并正确处理。
基本的资源意识…我有足够的RAM,套接字句柄等来打开这个连接? 很多很多东西,但是如果你在防守编码,那么你不会有太多的问题。 另外,请注意是否为每个新连接产生一个新的线程。 他们也不是无限的。