|
аутентификация пользователей через веб-интерфейсЗа что мне нравится Perl, так это ненужность изобретать велосипеды. проверка пароля сводится к вызову стандартной системной функции crypt($text,$salt). Действует она так : в качестве параметров подается пароль в "чистом" виде и зашифрованный, на выходе она должна выдать тот же зашифрованный пароль. Если этого не произошло, значит пароль в виде простого текста был неправильный. В общем вся процедура выглядит все где-то так: #!/usr/bin/suidperl # # читаем форму ......... &check_passwd; sub check_passwd { my $shadow = "/etc/shadow"; # ниже две строчки = переданные из формы пароль/логин $plaintext = $form{'password'}; $username = $form{'login'}; # пытаемся открыть файл зашифрованных паролей (на нормальной системе # он доступен только для чтения только root-ом.) # и заодно попытаемся его залочить. open (SHADOW, "<$shadow") or die "Internal system error: $!"; flock (SHADOW, 2) or die "Internal lock error: $!"; @shadows=; flock SHADOW, 8; # закроем shadow close SHADOW; foreach $line(@shadows) { chomp($line); ($currentuser, $currentpass, $restofline) = split /:/, $line, 3; if ($currentuser eq $username) # Выдергиваем зашифрованный пароль из shadow $saltedpass = $currentpass; # Проверяем его стандартной функцией crypt if ( crypt ($plaintext, $saltedpass) eq $saltedpass) { print "Authentification for $username success!n"; } else { print "Authentification for $username failure!n"; } } } } Файлу, содержащему сей "шедевр" программистского искусства следует в целях безопасности установить атрибуты: Владелец - root Взведенный бит установки ID пользователя при исполнении режим доступа r-sr-xr-x грубо говоря, в восьмеричном отображении оно будет выглядеть как 104555 В этом suid-e и кроется опасность, - если кто-то умудрится всунуть кусок своего кода в вашу программу, то сможет получить доступ к вашей системе. (Для неверующих - прочитайте что-нибудь про Ramen - он еще и не то делает/делал). Другие статьи по теме: - введение в perl- Perl для чайников от ns - практическое применение perl-скриптов - использование библиотеки mime-base64 - аутентификация пользователей через веб-интерфейс |
|
2006-2024 © SMTI.RU Главная страница | Связаться с нами |