ACo*_*bbs 13 php security ajax
我总是担心我的PHP应用程序中的安全问题,我只是(可能)想到了黑客可能会破坏我的脚本的方式.目前我的应用程序采用表单数据并通过AJAX将其作为数组提交给PHP脚本,然后遍历此数组.
foreach($_POST['form_data'] as $field => $value){
//Do something here.
}
Run Code Online (Sandbox Code Playgroud)
但是,如果黑客伪造一个AJAX请求,并重复提交带有1000亿随机元素的'form_data'数组怎么办?循环必须遍历每个元素,可能导致DoS(或至少减慢服务),是否正确?
我在这里没有完全接受过教育,所以我可能会有一些不正确的假设.感谢您的任何意见!
Nik*_*kiC 13
这不是问题:PHP使用max_input_vars指令限制POST变量的最大数量,默认为1000个变量.
实际上强制实施此限制是为了防止比您正在考虑的更严重的DOS攻击类型(实际上,迭代几千个数组元素就像什么都没有),即基于哈希表冲突的攻击(通常称为HashDOS).有关该问题的更多信息,请参阅我的文章Supercolliding a PHP array.
循环必须遍历每个元素,可能导致DoS(或至少减慢服务),是否正确?
这是真的(尽管Web服务器的POST大小限制,并且脚本的内存限制可能会在100000000000项之前很久就停止了).
同样,@ duskwulf指出,PHP> = 5.3.9具有默认设置为1000 的max_input_vars变量.
您仍然可以进行尺寸检查以确保安全.