我之前和我的一位程序员交谈过,他给我看了一段他正在考虑的代码:
foreach($_REQUEST as $var=>$val) {
$$var = addslashes($val);
}
他希望能够使用$varName
而不是不得不写$_REQUEST['varName']
我建议他使用mysql_real_escape_string
而addSlashes
不是将$_REQUEST
变量放入本地堆栈,因为这给了黑客一个附加向量。对我来说,这似乎与旧REGISTER_GLOBALS
指令有同样的问题。
他说不存在相同的安全风险,因为这些变量都是在本地堆栈上创建的。所以我不确定,我在以下位置查看了 PHP 变量变量页面:http ://www.php.net/manual/en/language.variables.variable.php但除了警告框之外没有看到对 Super Globals 和安全性的引用.
黑客可以轻松利用这种结构吗?