我正在编写代码来验证所有$ _POST变量都在'允许'列表中以防止黑客攻击。
这个想法是,如果我在一个表单中有4个字段,并且有人发送了一个额外的post变量,则会显示错误。
我的第一个问题是:这有用吗?
这是我的PHP代码,用于检查发送的帖子,但我不知道为什么它不起作用:
$allowed = array(
'field1',
'field2',
'select1',
'textarea1',
'submit_button'
);
foreach($_POST as $k => $v) {
if(!array_key_exists($k, $allowed)) {
die('error with field: '.$k);
}
}
答案 0 :(得分:1)
使用in_array
代替array_key_exists
$allowed = array(
'field1',
'field2',
'select1',
'textarea1',
'submit_button'
);
foreach($_POST as $k => $v) {
if(!in_array($k, $allowed)) {
die('error with field: '.$k);
}
}
这可能很有用,但您仍应对收到的表单进行真实验证。