我正在阅读关于php安全性的一本书,并且在输入验证章节中有一小节讨论只允许预期的输入。这是什么意思,只允许预期的输入在PHP?
这是他们展示这些代码:
<?php
$expected = array('carModel', 'year', 'bodyStyle');
foreach($expected AS $key) {
if (!empty($_POST[ $key ])) {
${$key} = $_POST[ $key ];
}
else {
${$key} = NULL;
}
}
?>
我有点糊涂了,有一个小段落,解释这段代码的功能。对于我所得到的,它将数组中的值作为$ _POST的键值。它还表示该阵列应该以编程方式从GPC阵列中复制完成。
我不明白在什么情况下我应该使用它?什么是GPC阵列?
恕我直言,你应该把这本书扔在垃圾桶里。它是在1999年写的吗?上面的代码不会销毁$ _POST数组,所以你可能会在不经意的情况下意外使用它;它会将所有变量转储到该代码所放入的任何名称空间中。更好的方法是查看$ _POST数组,并使列表中的值不在列表中。甚至更好的办法是将这些值放入一个新的数组/对象中并销毁原始数据。 – DampeS8N 2013-04-05 19:53:08
// @ DampeS8N哦真的吗?我不知道!你有没有机会知道更新的书?或者可能是我可以了解该主题的链接。感谢您的评论,这本书来自几年前,但我不知道它会指向错误的方式。 – Ant100 2013-04-07 14:30:05
这个网站是一个很好的开始。答案中的一些链接也很好。一般来说,我建议不要从书中学习。但我知道有些人从他们身上学到更好。 – DampeS8N 2013-04-07 18:04:58