останьтесь вошел в систему в php приложении в течение +1 недели

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

Нам нужны сессии для этого? (табличное пространство использования и память?) или лучше работать с cookie? (безопасность?)

5
задан Jorre 10 July 2010 в 10:26
поделиться

3 ответа

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

Идентификатор обычно хранится в файле cookie. Установите срок действия cookie сеанса через одну неделю, и вы готовы к тому, что пользователи будут оставаться в системе в течение недели.

См.

3
ответ дан 14 December 2019 в 18:55
поделиться

«Запомнить меня» - всегда дыра в безопасности, что бы вы ни использовали - файл cookie или сеанс - кто-то может (теоретически ) украсть cookie и, таким образом, войти в учетную запись без пароля. Есть способы повысить безопасность, разрешив отзыв только с одного и того же IP-адреса. Файлы cookie, AFAIK, менее безопасны, однако это зависит от того, как вы реализуете аутентификацию. Например, сохраняя хэш пароля в файлах cookie, вы почти даете злоумышленнику настоящий пароль (который нельзя использовать в других веб-приложениях), поскольку существуют словари для получения простых паролей из хеша. Соление хеша не сильно помогает.

В общем, сессия - самый простой и удобный способ. Используйте таблицы, если вы используете более одного веб-сервера для приложения, в противном случае сеансы на диске в порядке.

1
ответ дан 14 December 2019 в 18:55
поделиться

Строго говоря, вам не нужны сессии. Вы путаете две вещи:

  • Сессии используются для хранения данных на стороне сервера для конкретного пользователя. Это, вероятно, включает имя пользователя, под которым он вошел в систему. Сессии обычно относительно недолговечны (например, истекают через несколько минут или часов бездействия). Для привязки конкретного пользователя к конкретной сессии обычно используются сеансовые куки (т.е. куки, срок действия которых истекает после закрытия пользователем браузера), хотя могут использоваться и другие методы, например, передача идентификатора сессии в URL (в этом случае следует остерегаться фиксации сессии).
  • Для долговременного входа в систему обычно хранят учетные данные пользователя или некий суррогат учетных данных пользователя в несеансовом файле cookie, срок действия которого истекает через несколько недель или месяцев. Если пользователь не имеет активной сессии, связанной с ним, эти учетные данные используются для инициирования такой сессии без участия пользователя.

Таким образом, cookies используются для двух целей - для хранения недолговечного (в течение нескольких минут или часов) идентификатора сессии и для хранения учетных данных пользователя в течение нескольких дней/недель/месяцев.

1
ответ дан 14 December 2019 в 18:55
поделиться
Другие вопросы по тегам:

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