Destio небольшой блог

eval() в input, PHP

Рекомендации не эвалить пользовательский инпут пишут на каждом заборе, что уже и неинтересно. Но мне как-то стало интересно, почему нигде не упоминается возможность вписать eval() с кодом внутри прямо в input, а уж там то наверное при работе с $_POST все сразу и отэвалится. Наверное, раз нигде не упоминается, это и не работает, а то дыра была бы просто чудовищных размеров.

Чем читать основы синтаксиса, лучше потестить, и оказалось что в посте у нас все значения – строки, которые не хотят эвалить сам себя.

$foobar = eval(die;); #работает прекрасно

#в поле $_POST['foobar'] у нас все тот же eval(die;);
$foobar = $_POST['foobar']; #никакого эффекта

В общем неизвестно, чего я ожидал, но этой дырки в пхп вроде нет. И сочетания разных кавычек и конкатенаций не помогают.
Зато мы научились тому что все переменные в $_POST – строки (чем они еще могли быть?).

Ярлыки: ,


Ближайшие сообщения:

Похожие сообщения:

Комментарии к этой записи отключены.