Действительно ли распространено сохранить пользовательский пароль на Сессии PHP?

В новинку для php Сессий здесь. Мои хранившие пользовательские данные довольно незначительны и не очень чувствительны, но конечно я все еще хочу безопасный сайт. Я сохранил их хэш пароля в своем дб с солью.

Я должен проверить пользователя на каждой странице моего сайта с помощью их пароля, или то излишество? Другими словами, если они успешно "вошли в систему", и я сохранил их имя пользователя на php сессии, то, что достаточно хороший, чтобы они переместились вокруг с сайтом, знающим, кто они?

Я спрашиваю, потому что кажется, что хранение пользовательского пароля на сессии является, вероятно, не лучшей идеей. Это верно?

7
задан ctown4life 1 July 2010 в 15:25
поделиться

6 ответов

Вам не нужно аутентифицировать по каждому запросу, но вам нужно авторизовать по каждому запросу.

Аутентификация - это проверка имени пользователя и пароля пользователя в базе данных. После успешной аутентификации вам нужно только сохранить их ID пользователя (или имя пользователя) в сеансе.

При каждом последующем запросе проверяйте, что текущий сеанс авторизован для просмотра запрошенного содержимого. В вашем случае вам, вероятно, просто нужно убедиться, что в сеансе есть действующий идентификатор пользователя ... вам не нужно ничего делать с базой данных.

Вы можете использовать функцию, подобную следующей, для авторизации по каждому запросу:

function isAuthorized() {
    return isset($_SESSION['user_id']) && ($_SESSION['user_id'] != 0);
}

Вы можете сделать это еще более безопасным, управляя своими собственными данными сеанса в базе данных, и тогда вам не нужно сильно доверять файлы cookie, которые могут быть проданы / украдены / и т. д. (злонамеренными) пользователями. Но для большинства веб-приложений это обычно перебор.

8
ответ дан 6 December 2019 в 12:46
поделиться

Не храните пароль. Вместо этого сохраните токен аутентификации, наличие которого вы можете проверить, в отдельной таблице.

5
ответ дан 6 December 2019 в 12:46
поделиться

Я бы не стал хранить пароль в сеансе, вы можете просто сохранить, что они вошли в сеанс.

$_SESSION['uerlogged'] = $mytoken;

Затем каждая загрузка страницы проверяет, установлен ли $ _ SESSION ['userlogged'] .

Вы также можете рассмотреть возможность добавления мер предосторожности для взлома сеанса. Взгляните на - PHP: Предотвращение взлома сеанса с помощью токена, хранящегося в виде файла cookie?

2
ответ дан 6 December 2019 в 12:46
поделиться

На самом деле нет необходимости хранить пароль в сеансе. У вас должны быть флаги состояния, чтобы показать, аутентифицированы ли они в настоящее время, а также какой-то объект, который определяет, кто является пользователем, и информацию о нем.

1
ответ дан 6 December 2019 в 12:46
поделиться

Сохранение пароля в сеансе ничем не отличается от сохранения имени пользователя в сеансе после того, как пользователь вошел в систему, поэтому не сохраняйте пароль.

Он будет работать как сохраненное имя пользователя, чего достаточно (подойдет даже флаг).

0
ответ дан 6 December 2019 в 12:46
поделиться

Пользователи не могут изменять сеансы, вы можете хранить там только имя пользователя и быть уверенным, что оно всегда будет правильным.

0
ответ дан 6 December 2019 в 12:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: