Перейти к содержимому

Сервис обмена электронных валют

Партнерская программа Kredov

Подводные камни конструкции eval

#1 Vialls

Vialls
  • Пользователь
  • 581 сообщений
  • Репутация: 1
0

Отправлено 17 Июль 2008 - 22:41

Ну в общем сабж. Какие подводные камни могут быть у конструкции eval. Как правильно следует её использовать относительно безопасности и т.д.

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 17 Июль 2008 - 23:16

Вот в этой статье описаны некоторые за и против eval http://habrahabr.ru/.../php/40532.html

Поосторожнее с eval().

Передача данных, введенных пользователем, в eval() может быть крайне опасна. По существу, вы даете пользователю возможность выполнить какую вздумается команду! Вы будете уверены, что ввод поступает, например, с выпадающего меню, а на самом деле ваш юзер задумал нечто вроде:
script.php?input=;passthru("cat /etc/paswd");

Засунув свой код в этот оператор, юзер сможет заставить вашу программу полностью вывести файл /etc/passwd. Используйте eval() с умом, и любой ценой проверяйте ввод. Короче, используйте его только в случае крайней необходимости - т.е. в случае динамически генерируемого кода. Если он вам нужен для подстановки значений в темплейты и т.п., то это вы зря... Попробуйте лучше sprintf() или нормальные системы работы с темплейтами.

взято с http://www.nestor.minsk.by/

От себя добавлю, что eval исполняет не только системные команды, но также если я подключу каким-то образом свой файл с компа, я могу удалить весь твой хост...
Вообщем с eval надо быть очень окуратным
  • 0

#3 Vialls

Vialls
    Topic Starter
  • Пользователь
  • 581 сообщений
  • Репутация: 1

Отправлено 18 Июль 2008 - 06:07

Спасибо, в общем все ясно. Думаю лучше использовать require/include... Но, если есть уверенность, что юзер никак не сможет передать в скрипт PHP код, который идет в eval, то можно и его юзать..
  • 0


Оформление форума – IPBSkins.ru