Страницы

Поиск по вопросам

воскресенье, 8 декабря 2019 г.

Безопасность использования сессий

#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-инъекций на сайте, возможно стоит проверить его каким-нибудь автоматическим инструментом.

Комментариев нет:

Отправить комментарий