URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3889
[ Назад ]

Исходное сообщение
"Авторизация в Squid через базу данных PostgreSQL"

Отправлено Hostik , 01-Фев-05 09:29 
Доброго времени суток.
Такая проблема -
Написал свой авторизатор для Сквида
#!/usr/bin/perl

use DBI;

my $user = "User";
my $pass = "passwd";
my $database = "billing";
my $host="x.x.x.x";
my $port="5432";

my $dbh=DBI->connect("dbi:Pg:dbname=$database;host=$host;port=$port", $user, $pass, {RaiseError => 1})
    or die $DBI::errstr;

$|=1;

while (<>)
{
    chop;
    ($user, $pass)=split;
    $ans = Check($user, $pass);
    $dbh->disconnect;
    print ("$ans\n");
}

sub Check() {
    my $qrystr="select count(*) from users where login = '$user' and passwd = '$pass' ;";
    my $result=$dbh->prepare($qrystr);
    $result->execute();
    @count = $result->fetchrow_array;
    $result->finish;
    if ($count[0] > 0) {
    return ("OK");
    }    else
     {
    return ("ERR");
}


Поставил в Сквиде
auth_param basic program /usr/local/etc/squid/sqauth.pl
acl authuser proxy_auth
http_access allow authuser


если запускать этот файлик и вводить через пробел Логин/пароль то все норма, выдает ОК или ERR соответственно
однако-же через сквид он 1 раз может пустить а потом все. В чем может быть трабл?
Может быть из за того что база лежит на удаленном серваке, а у сквида есть определенное время ожидания ответа? если так то где его можно исправить, помогите плиззз. уже 2 недели парюсь.............


Содержание

Сообщения в этом обсуждении
"Авторизация в Squid через базу данных PostgreSQL"
Отправлено Hostik , 01-Фев-05 12:09 
Народ ну не молчите, выскажите хотя-бы предположения свои. плизз.........

"Авторизация в Squid через базу данных PostgreSQL"
Отправлено Leningrad , 01-Фев-05 13:53 
>Народ ну не молчите, выскажите хотя-бы предположения свои. плизз.........

столько дыр в такой маленькой программе


"Авторизация в Squid через базу данных PostgreSQL"
Отправлено Hostik , 01-Фев-05 14:45 
>>Народ ну не молчите, выскажите хотя-бы предположения свои. плизз.........
>
>столько дыр в такой маленькой программе


Каких например?


"Авторизация в Squid через базу данных PostgreSQL"
Отправлено Аноним , 02-Фев-05 09:28 
Например, для любого пользователя (даже несуществующего) подходит пароль "' or 1=1 ;--".


"Авторизация в Squid через базу данных PostgreSQL"
Отправлено Hostik , 02-Фев-05 10:59 
>Например, для любого пользователя (даже несуществующего) подходит пароль "' or 1=1 ;--".
>


понял, поправим, но вопрос был не в этом, а в том из-за чего сквид не пропускает, хотелось бы все таки узнать..................


"Авторизация в Squid через базу данных PostgreSQL"
Отправлено Hostik , 02-Фев-05 11:42 
>>Например, для любого пользователя (даже несуществующего) подходит пароль "' or 1=1 ;--".
>>
>
>
>понял, поправим, но вопрос был не в этом, а в том из-за
>чего сквид не пропускает, хотелось бы все таки узнать..................

Кстати этот пароль не проходит, скрипт ведь сначала делает split по строке и получает 2 значения в Логин и пароль если по вашему то он получит в $user = "'" а в $paswd = "or"


"Авторизация в Squid через базу данных PostgreSQL"
Отправлено Аноним , 02-Фев-05 15:19 
>Кстати этот пароль не проходит, скрипт ведь сначала делает split по строке
>и получает 2 значения в Логин и пароль если по вашему
>то он получит в $user = "'" а в $paswd =
>"or

Может в данном конкретном случае и пронесет, но лучше так не делать.

По существу вопроса: попробуй disconnect из цикла убрать.


"Авторизация в Squid через базу данных PostgreSQL"
Отправлено Hostik , 02-Фев-05 15:41 
>>Кстати этот пароль не проходит, скрипт ведь сначала делает split по строке
>>и получает 2 значения в Логин и пароль если по вашему
>>то он получит в $user = "'" а в $paswd =
>>"or
>
>Может в данном конкретном случае и пронесет, но лучше так не делать.
>
>
>По существу вопроса: попробуй disconnect из цикла убрать.


Не помогает, может сквиду на самом деле нужно отдавать ответ за определенное время?