Я настраиваю систему учетных записей пользователей на своем веб-сайте. Консенсус SO, похоже, отражен в этом вопросе / статье SO . Он рекомендует этот подход Чарльза Миллера для хранения имени пользователя и большого случайного числа 1) в файле cookie и 2) в отдельной таблице в БД. Пользователь может проходить повторную проверку подлинности в каждом последующем сеансе, запрашивая эту таблицу с помощью файла cookie (если он существует). Если совпадение найдено, то для этого сеанса устанавливается новый $_SESSION
. Поддерживает одновременный вход с разных компьютеров.
Мой вопрос ...
До прочтения вопросов безопасности в SO я думал о том, чтобы хранить информацию о пользователе способом, подобным тому, как это делает vBulletin. Насколько я понимаю, они хранят идентификатор пользователя и хешированный пароль в отдельных файлах cookie в браузере пользователя.
После входа в систему пользователь использует переменную $_SESSION
(например, что-то вроде $_SESSION['user_hash']
), чтобы поддерживать аутентификацию для каждого запроса страницы. У меня нет доступа к программному обеспечению vBulletin, но я предполагаю, что $_SESSION['user_hash']
поддерживается в отдельной таблице MySQL вместе с другой частью идентифицирующей информации - например, идентификатор пользователя / хэш пароля / другое - для включения входа с разных компьютеров.
Я думал о создании хеша, выполняя это:
$_SESSION['user_hash'] = $random_hash = sha1(uniqid(rand(), true));
Для будущих сеансов, если $_SESSION['user_hash']
не существует, эти два файла cookie можно использовать для автоматического входа этого человека в новый сеанс. Я планирую реализовать меры безопасности $_SESSION
, изложенные в этом SO вопросе .
Является ли подход vBulletin приемлемым с точки зрения безопасности? Если хранение идентификатора пользователя и хешированного пароля в файле cookie является проблематичным, поможет ли их шифрование устранить некоторые проблемы безопасности? Или что-то еще можно сделать, чтобы обезопасить куки?
Спасибо за любые предложения.