ПИШЕМ БАЖНУЮ CGI'ШКУ НА PERL
Спецвыпуск Xakep, номер #022, стр. 022-024-3
#!/usr/bin/perl -T
Теперь на каждую небезопасную конструкцию perl будет громко ругаться.
Кстати, есть довольно полезный ресурс: http://www.w3c.org/Security/, на котором можно почерпнуть много полезностей относительно безопасного веб-программирования.
#!/usr/bin/perl
###
# запуск: gb.cgi?gbname=ИМЯ
# ИМЯ - имя файла (ИМЯ.dat), в котором будут храниться записи
###
use CGI qw (:standard);
use CGI::Carp qw (fatalsToBrowser);
$| = 1;
print "Content-type: text/html\n\n";
$gbname = param('gbname');
$action = param('action');
$date = param('date');
if ($action eq 'add') {
&add();
} else {
&show();
}
exit;
sub show{
open(FILE, "$gbname.dat");
@DATA = <FILE>;
close(FILE);
foreach (@DATA) { print $_; }
return;
}
sub add{
$name = param('name');
$to = param('to');
$subject = param('subject');
$msg = param('msg');
$mailprog='/usr/sbin/sendmail';
open(MAIL,"|$mailprog $to -s $subject");
print MAIL "$name\n$msg\n";
print MAIL "Date: " . `/bin/$date` . "\n";
close MAIL;
open(FILE, ">$gbname.dat");
print FILE "Имя: <a href=\"mailto:$to\">$name</a><br>Заголовок: $subject<br>Сообщение: $msg<br>";
close(FILE);
print "Запись добавлена";
}
<form method="POST" action="cgi-bin/gb.cgi">
<input type="hidden" name="date" value="date">
<input type="hidden" name="gbname" value="test">
<input type="hidden" name="action" value="add">
<p>Имя:<input type="text" name="name" size="20"></p>
<p>Е-mail<input type="text" name="to" size="20"></p>
<p>Заголовок:<input type="text" name="subject" size="20"></p>
<p>Сообщение:<textarea rows="2" name="msg" cols="20"></textarea></p>
<p><input type="submit"><input type="reset"></p>
</form>
Назад на стр. 022-024-2 Содержание
|