В новинку для php Сессий здесь. Мои хранившие пользовательские данные довольно незначительны и не очень чувствительны, но конечно я все еще хочу безопасный сайт. Я сохранил их хэш пароля в своем дб с солью.
Я должен проверить пользователя на каждой странице моего сайта с помощью их пароля, или то излишество? Другими словами, если они успешно "вошли в систему", и я сохранил их имя пользователя на php сессии, то, что достаточно хороший, чтобы они переместились вокруг с сайтом, знающим, кто они?
Я спрашиваю, потому что кажется, что хранение пользовательского пароля на сессии является, вероятно, не лучшей идеей. Это верно?
Вам не нужно аутентифицировать по каждому запросу, но вам нужно авторизовать по каждому запросу.
Аутентификация - это проверка имени пользователя и пароля пользователя в базе данных. После успешной аутентификации вам нужно только сохранить их ID пользователя (или имя пользователя) в сеансе.
При каждом последующем запросе проверяйте, что текущий сеанс авторизован для просмотра запрошенного содержимого. В вашем случае вам, вероятно, просто нужно убедиться, что в сеансе есть действующий идентификатор пользователя ... вам не нужно ничего делать с базой данных.
Вы можете использовать функцию, подобную следующей, для авторизации по каждому запросу:
function isAuthorized() {
return isset($_SESSION['user_id']) && ($_SESSION['user_id'] != 0);
}
Вы можете сделать это еще более безопасным, управляя своими собственными данными сеанса в базе данных, и тогда вам не нужно сильно доверять файлы cookie, которые могут быть проданы / украдены / и т. д. (злонамеренными) пользователями. Но для большинства веб-приложений это обычно перебор.
Не храните пароль. Вместо этого сохраните токен аутентификации, наличие которого вы можете проверить, в отдельной таблице.
Я бы не стал хранить пароль в сеансе, вы можете просто сохранить, что они вошли в сеанс.
$_SESSION['uerlogged'] = $mytoken;
Затем каждая загрузка страницы проверяет, установлен ли $ _ SESSION ['userlogged']
.
Вы также можете рассмотреть возможность добавления мер предосторожности для взлома сеанса. Взгляните на - PHP: Предотвращение взлома сеанса с помощью токена, хранящегося в виде файла cookie?
На самом деле нет необходимости хранить пароль в сеансе. У вас должны быть флаги состояния, чтобы показать, аутентифицированы ли они в настоящее время, а также какой-то объект, который определяет, кто является пользователем, и информацию о нем.
Сохранение пароля в сеансе ничем не отличается от сохранения имени пользователя в сеансе после того, как пользователь вошел в систему, поэтому не сохраняйте пароль.
Он будет работать как сохраненное имя пользователя, чего достаточно (подойдет даже флаг).
Пользователи не могут изменять сеансы, вы можете хранить там только имя пользователя и быть уверенным, что оно всегда будет правильным.