Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Безопастность cgi-скрипта 
:(
    Опции темы
Vetlblya
Дата 26.5.2010, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 3.6.2009

Репутация: нет
Всего: нет



Товарищи Перловцы!!!
Очень хочется чтобы представленный ниже скрипт работал безопастно, чтобы злобные хацкеры не могли его поломать. В Перле моих познаний маловата для обеспечения хорошей безопастности скрипта посему обращаюсь к вам! что надо исправить/добавить в скрипте что бы он стал более безопасный/правильный????

скрипт авторизации:
Код

#!c:/perl/bin/perl.exe 
use CGI qw(:standard);
use strict;
use DBI;
use CGI::Cookie;
use Apache::Session::File;

my ($dbh,$rv, $st, @row);

if (param('id')=~ (/^[0-9]+$/)) #проверяем состоит ли логин из одних только цифер
{
if (param('pass')=~ (/^[a-zA-Z0-9]+$/)) #пароль проверяем на содержание только латинских символов и цифер
{

my $id=param('id');
my $pass=param('pass');

my %Session;

$dbh = DBI->connect("dbi:mysql:database=test:host=localhost")or print "err01";

$st = $dbh->prepare("select mail from user where id=? and pass=?;"); #проверяем наличие пользователя в БД
$st->execute($id, $pass)or print "err08";
@row=$st->fetchrow_array;

my $cooke;

if ($row[0]eq '') #если пользователь не найден отправляем ему пустой кук
    {
    $cooke = new CGI::Cookie(-name=>'Session', -value=>undef);
    print header(-charset=>'Windows-1251',-cookie=>$cooke);    
    print 'err07';
    exit;
    }
    else# если пользователь найден открываем сессию (пересылаем кой-какие данные и кук)
    {
    tie %Session, 'Apache::Session::File', undef , {Directory => 'sessions', LockDirectory   => 'sessions'};

    $st = $dbh->prepare('select l0, l1 from user where id='.$id.';');
    $st->execute()or print "err08";
    @row=$st->fetchrow_array;                
    
    my $cookie = new CGI::Cookie(-name=>'Session',-value=>$Session{_session_id},-expires => '+1h');
    print header(-cookie=>$cookie)or print "err16";
    print 'l0'.$row[0].'l1'.$row[1].'l2';

    }
}
else #работаем если пароль содержит недопустимые символы
{
 print "Content-Type:text/html\n\n";
 print "err04";    
}
}
else #работаем если логин содержит недопустимые символы
{
print "Content-Type:text/html\n\n";
print "err09";
}


PM MAIL   Вверх
sir_nuf_nuf
Дата 26.5.2010, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 2
Всего: 31



use warnings; - помогает от ошибок.
or print "err08"; - это фраза у вас печатается до html загаловка.


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0570 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.