Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Nikita Zaitcev                       2:5020/400     24 Sep 2000  01:06:06
 To : All
 Subject : авторизация доступа
 -------------------------------------------------------------------------------- 
 
 * я запостил это в CGI.PERL.CHAINIK, там ничего не ответили, но и на дверь
 не указали.
 
 Задача такова. Hеобходимо обеспечить пользователям сайта авторизованный
 доступ к неким ресурсам. Управление этими ресурсами реализовано через
 многостраничный cgi-скрипт и аворизацию доступа нужно встроить именно в
 него. Почему в решении не должны быть задействованы средства ОС и
 веб-сервера? Потому, что необходимо иметь возможность в любой момент
 переместить сайт на другой хостинг, под другую ОС и другой веб-сервер, и
 чтобы при этом все продолжало работать, как ни в чем не бывало.
 Я остановился на таком алгоритме:
 1) Для каждого пользователя создаем db-файл с полями login, password, key,
 time.
 2) Hа первой странице располагаем форму авторизации - пользователь вводит
 свои login/password, скрипт сравнивает их с хранящимися в db.
 3) Если все правильно, скрипт генерит длинное случайное выражение и
 записывает его в поле key. В поле time записывается текущее системное время.
 4) Значение key передается на следующую страницу в виде hidden-поля формы.
 5) При вызове каждой последующей страницы key-из-формы сравнивается с
 key-из-db и повторяется (3), т.е. key генерится заново.
 6) По окончанию работы с ресурсом выдается страница с формой для logout.
 Скрипт очищает поля key и time, сеанс закончен.
 7) При попытке авторизации (2), скрипт не только проверяет login/password,
 но и поле key - если оно не пустое, значит, кто-то уже зашел под этим именем
 и пользователь получает отказ.
 8) Зачем нужно поле time - в случае (7) проверяется также таймаут - сколько
 времени прошло с момента последней записи key. Если это время превысило
 некую величину - прошлый сеанс считается прерванным (пользователь закрыл
 браузер в середине процесса, произошел обрыв связи, etc.), тогда обнуляем
 key и time и авторизуем по новой .
 Sorry за многословность, короче не вышло :(
 Собственно кодирование всего этого на Perl особой проблемы не представляет.
 Меня интересуют узкие и уязвимые места - если это плохое решение, то чем
 конкретно оно плохо?
 --
 rgrds WildHare
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 авторизация доступа   Nikita Zaitcev   24 Sep 2000 01:06:06 
 Re: авторизация доступа   Evdokimov Denis   28 Sep 2000 16:38:59 
Архивное /ru.cgi.perl/6577c7b8dde4.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional