достаточно ли безопасно избегать переменных eval? - PullRequest
0 голосов
/ 25 августа 2010

Достаточно ли безопасен экранирование переменных eval с точки зрения безопасности.Например,

$path = "a";    //sample value; is generated dynamically
$var = "phpinfo()";     //sample attack value; is generated dynamically
eval("\$struct$path = \$var;");

мне кажется, это работает безопасно.Хотя, по-видимому, нет никакой причины использовать код в первую очередь, теперь, когда он есть, его нельзя удалить без причины.

Есть ли какой-либо способ (любое значение для $ var или $ path)это может сломать этот eval, или я просто слишком волнуюсь :-) и это безопасный случай ???

Ответы [ 3 ]

2 голосов
/ 25 августа 2010

Зависит от того, откуда $path.Это значение нарушает его:

=0;unlink('/important/file');//
0 голосов
/ 25 августа 2010

Понятия не имею, что на самом деле должен делать ваш eval-код.Но если речь идет о динамическом varname, как об этом:

extract(array("\$struct$path", "\$var"));

Быстрее.

0 голосов
/ 25 августа 2010

Вам может понадобиться eval для реализации системы плагинов с хуками ... Но вы никогда не должны запускать с ней динамический контент (например, phpinfo).

...