Если вы действительно хотите, чтобы пользователь вошел в систему, вам следует сохранить уникальный токен входа в файл cookie, а не имя пользователя или хешированный пароль. Когда ваш сервер получает токен входа в систему, вы можете сравнить его с вашей базой данных пользователей, постоянно вошедших в систему, и увидеть, какому пользователю соответствует токен. Сервер должен хранить токен входа, имя пользователя, связанное с этим токеном, и время истечения срока действия. После использования токен должен быть признан недействительным, чтобы его нельзя было использовать повторно.
Это сводит к минимуму утечку информации клиенту и ограничивает возможности злоумышленника восстановить пароль законного пользователя, если ему удастся украсть файл cookie (что относительно легко сделать).
Я настоятельно рекомендую вам также установить флаг безопасности для всех ваших файлов cookie, чтобы они отправлялись только через безопасные соединения, и убедитесь, что у вас есть относительно короткий тайм-аут для постоянных входов в систему. Кроме того, рекомендуется провести дополнительные проверки авторизации, например убедиться, что токен входа в систему связан с определенным IP-адресом или отпечатком пальца браузера, чтобы предотвратить случайные атаки. Это по-прежнему не будет серьезно мешать решительному злоумышленнику, но может отговорить некоторых скрипачей.
Наконец, подумайте о том, чтобы воспользоваться советом @Craig T и запомнить только имя пользователя, а не сохранять пользователя в системе. Постоянные входы в систему очень опасны, поэтому вам следует тщательно подумать о пользе, которую ваши пользователи получат от этого, по сравнению с потенциальными затратами.
Молодец, что правильно храните пароли в своей БД! Удивительно, сколько людей думают, что им не нужны соли.
person
Cameron Skinner
schedule
23.11.2011