Возможные дубликаты:
Когда (если вообще когда-либо) не является злом?
когда eval evil в php?
Поскольку я не нашел другого способа выполнения строки из внешнего файла в качестве кода, я прибегал к использованию eval (). Я не спрашиваю о каком-либо коде, в частности, поскольку примеры из моего сценария использования будут тривиальными – то, что я хочу знать, – вот что представляет опасность использования eval в php-коде.
Я сделал некоторые исследования по этому вопросу, но я не мог найти ответа, который бы удовлетворял мое любопытство. Все, что мне удалось найти, это такие вещи, как «выполнение вредоносного кода», «оскорбительные инъекции» и т. Д. Нет примеров и подробных объяснений о том, почему это такая плохая практика.
Кто-нибудь хочет ответить на это немного глубже?
Благодарю.
Ознакомьтесь с этими предыдущими вопросами:
Когда eval () зло в PHP?
Когда (если когда-либо) является eval () НЕ Злой?
О проблемах см. Эту ссылку:
http://www.google.com/search?q=php+why+eval+is+bad
Но вам не нужно использовать eval
. Разработчики действительно должны действовать так, как будто eval
не существует. Возможно, вы могли бы объяснить свою ситуацию более четко? Вопросы, например, когда вы получаете файл кода, почему вы не можете использовать include
и т. Д.
До тех пор, пока вы можете доверять источнику кода, который вы вызываете с помощью eval()
вы будете в безопасности.
Если случайные пользователи предоставляют строки, которые вы вызываете eval()
, тогда вы рискуете, что кто-то предоставит вам злые строки вроде этого:
exec("rm -rf /");
Ваш eval
радостью выполнит эту строку, и в зависимости от разрешений он удалит все из вашей файловой системы.
Если вы eval
код на стороне сервера, который вы (или кто-то, которому вы доверяете) писали, что он не является общедоступным, то это не более опасно, чем выполнение обычного PHP-кода. Проблема возникает, когда вы зависите от ввода пользователем, чтобы делать eval, поскольку он может быть вредоносным.