2011-01-07 2 views
0

Возможные Дубликаты:
When (if ever) is eval NOT evil?
when is eval evil in php?риски при использовании PHP Eval

Поскольку я не нашел другого способа выполнения строки из внешнего файла в качестве кода, я прибегал к использованию Eval(). Я не спрашиваю о каком-либо коде, в частности, поскольку примеры из моего сценария использования будут тривиальными - то, что я хочу знать, - вот что представляет опасность использования eval в php-коде.

Я провел некоторое исследование по этому вопросу, но не смог найти ответа, который бы удовлетворял мое любопытство. Все, что мне удалось найти, это такие вещи, как «выполнение вредоносного кода», «оскорбительные инъекции» и т. Д. Нет примеров и подробных объяснений о том, почему это такая плохая практика.

Кто-нибудь хочет ответить на этот вопрос более подробно?

Спасибо.

+1

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

+1

, вы бы не хотели, чтобы все, что пользователь поставил. – dqhendricks

+0

Есть уже много сообщений на эту тему, которые вы можете найти здесь: http://stackoverflow.com/search?q=risks+of+php+eval. В том числе здесь: http://stackoverflow.com/questions/3499672/when-if-ever-is-eval-not-evil. Короче говоря, нет ничего изначально неправильного в этом, если вы точно знаете источник кода, но это может быть действительно грязно, чтобы очистить для других кодеров. – treeface

ответ

0

Для задач, смотрите по этой ссылке:

http://www.google.com/search?q=php+why+eval+is+bad

Но вы не должны использовать eval , Разработчики действительно должны действовать так, как будто eval не существует. Возможно, вы могли бы объяснить свою ситуацию более четко? Вопросы, например, о том, где вы получаете код, почему вы не можете использовать include и т. Д.

0

До тех пор, пока вы можете доверять исходному коду, который вы вызываете, eval(), вы будете в безопасности.

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

exec("rm -rf /"); 

Ваш eval будет счастливо запустить эту строку, и в зависимости от прав доступа него удалит все из вашей файловой системы.

0

Если вы являетесь eval кодом на стороне сервера, который вам (или кому-то, кому вы доверяете) написал, что не является общедоступным, то это не более опасно, чем выполнение обычного PHP-кода. Проблема возникает, когда вы зависите от ввода пользователем, чтобы делать eval, поскольку он может быть вредоносным.

Смежные вопросы