#php #алгоритм #безопасность #сессия
Есть скрипт простой авторизации: Пользователь вводит логин, пароль и капчу. По AJAX это дело отправляется в пхп скрипт, который из БД достает пароль пользователя имя которого равно введенному, если они совпадают, то в сессию записывается логин и идет редирект в ЛК. Если пользователь заходит в ЛК и у него не зарегистрирована сессия с именем, то его выкидывает обратно в форму. Если зарегистрирована то из БД берутся остальные данные на основе сессии с логином. Как можно улучшить и какие дыры есть в этом алгоритме?
Ответы
Ответ 1
В качестве улучшения можно заглянуть в php.ini, и поменять алгоритм хэширования, используемый для генерации идентификатора сессии. '0' означает MD5 (128 bits), а '1' означает SHA-1 (160 bits). Начиная с PHP 5.3.0 также стало возможным указать любой из алгоритмов, предусмотренных расширением hash (если оно доступно), например sha512 или whirlpool. Полный список алгоритмов может быть получен с помощью функции hash_algos().Ответ 2
В алгоритме дыр нет - все достаточно надежно. Дыры если возможны только на этапе реализации. В качестве усовершенствования можно (1) перевести страницы с формой и AJAX-обработчик формы на HTTPS - трафик будет зашифрован и его перехват не даст злоумышленнику пароль в открытом виде. (2) Для того, чтобы снизить вероятность угона сессии следует ограничить время ее действия, каким-то разумным сроком. (3) Разумеется ни в коем случае нельзя допускать XSS-инъекций на сайте, возможно стоит проверить его каким-нибудь автоматическим инструментом.
Комментариев нет:
Отправить комментарий