ПИШЕМ БАЖНУЮ 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  Содержание