Я разговаривал с одним из моих программистов ранее, и он показал мне кусок кода, который он рассматривал:
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, но не увидел ссылки на суперглобальные переменные и безопасность, кроме окна предупреждения.
Могут ли хакеры легко воспользоваться этой конструкцией?