关于安全;我应该检查每个页面是否发送了多少变量,已发送的变量大小,如果页面中不需要,则阻止GET。
我的意思是,有人可能会多次发送非常大的文本作为GET变量来重载我的服务器。
有可能吗?我该怎么办呢?
答案 0 :(得分:1)
我的回答在某种程度上将您的问题与您的评论联系起来:
不,我担心黑客
安全方面我认为您应该检查和优化的第一件事是网站结构。你提到的问题是非常具体的,在某种程度上可能有所帮助,但可能不会成为他们的主要攻击。
您可以随时在服务器配置中的某处限制GET请求(对于大多数服务器,默认值大约为8KB)。您还可以创建自定义414
,说明缩短请求长度的原因。
总而言之,如果你的目标是安全,我会从别处开始(更广泛的情况),然后慢慢解决问题,直到我遇到核心。
答案 1 :(得分:1)
使用GET
请求您无法发送大量数据(Apache的默认值为8000个字符,check browser limitations here)。如果你不使用任何$_GET
参数,那么它对服务器的影响几乎没有。这里重要的是每秒请求数。普通用户不会产生大量请求
如果您正在寻找安全漏洞,请从上传文件执行限制(like PHP code in image.jpg
)和其他不安全的文件访问开始,XSS attacks,weak passwords generation等等。
答案 2 :(得分:1)
在大多数语言中如何处理POST / GET值存在很大问题,包括可能通过特制的请求导致DOS攻击的PHP。它首先在this talk中进行了讨论(幻灯片可用here)。
您还可以阅读here和here。主要的想法是POST / GET是数组,并且使用哈希表存储数组。攻击者可以通过故意创建冲突来创建DOS(数据具有相同的哈希值),从而导致大量计算。
但这不应该在应用程序级别处理,因此您作为PHP编码器不必担心它。上面描述的问题是PHP如何处理哈希表的问题,但您也可以通过限制PHP配置中POST / GET请求的大小来阻止它。
如果您担心DDoS,这也不必由您的应用程序代码处理,而是在外部,例如由防火墙处理。