В очередной раз попав в эту тему, совершенно не понял, о чём она.
То ли я что-то не понимаю, то ли другие... Надо разобраться.
Но что если администратор хостинга решит установить ее значение в единицу? Будет происходить двойное экранирование спецсимволов! Поэтому, функцию addslashes необходимо применять только в том случае, когда magic_quotes_gpc = 0.
Чем не нравится двойное экранирование?
Допустим есть код:
PHP код:
$name = addslashes($_GET['name']);
$query = "SELECT * FROM users WHERE username = '$name'";
Подаём на вход кавычку.
При magic_quotes_gpc = Off:
Код:
SELECT * FROM users WHERE username = '\''
Всё хорошо
При magic_quotes_gpc = On:
Код:
SELECT * FROM users WHERE username = '\\\''
Опять всё хорошо - за пределы кавычек выйти не получается.
Где уязвимость?!
Программа: TutorialCMS 1.02 (возможно и более ранние версии)
Насчёт примера вообще непонятно, к чему он здесь - там нет никакой фильтрации, понятно, что без слеширования код уязвим. Казалось бы, тема о безопасном использовании функций слеширования независимо от конфигурации php.
P.S. Чтоб убедить меня в осмысленности этой темы, напишите, пожалуйста, код, обрабатывающий входные параметры функцией addslashes() и уязвимый при magic_quotes_gpc = On.