Зачем использовать файл cookie на стороне клиента, если переменная сеанса PHP сохраняется - PullRequest
0 голосов
/ 19 сентября 2019

Я немного новичок в этом, поэтому вот что я думаю, я знаю (и я могу ошибаться).

  1. Переменная сеанса php может сохраняться достаточно долго, чтобы пользователь мог делать свое дело,Если браузер закрыт и вновь открыт, он должен войти в систему, поскольку переменная сеанса (php) очищается при закрытии.
  2. Сервер знает, какие переменные сеанса php принадлежат какому клиенту.
  3. НаличиеФайл cookie на стороне клиента, который содержит идентификатор сеанса php, представляет собой небольшую уязвимость.

Если все это так, и нет ничего более важного для добавления в смесь, то зачем создавать сторону клиентаcookie, который может быть скомпрометирован?

Разве не было бы лучше / безопаснее просто использовать переменные сеанса?

Или php автоматически создает файл cookie на стороне клиента, который является уязвимым битом?

Ответы [ 3 ]

3 голосов
/ 19 сентября 2019

Идентификатор в файле cookie на стороне клиента сообщает PHP , какой сеанс принадлежит вам.

1 голос
/ 19 сентября 2019

Сервер знает, какие переменные сеанса php принадлежат какому клиенту.

И как он это делает?Сохраняя идентификатор сеанса в файле cookie, который клиент отправляет обратно на сервер при каждом запросе.

Если браузер закрыт и вновь открыт, он должен войти в систему после очистки переменной сеанса (php)при закрытии.

Истекает не сессия PHP, а браузер, который закрывает куки при закрытии.У клиента не будет идентификатора сеанса для отправки на сервер.(Если в файле cookie не указано явное время истечения, в этом случае браузер будет удерживать его.) (И сессия PHP в конечном итоге тоже истечет , просто для ясности.)

0 голосов
/ 19 сентября 2019

Файл cookie с идентификатором сессии необходим.Это потому, что php-сервер действительно не знает, кто отправил запрос.

Одним из решений для распознавания владельца запроса является файл cookie, который содержит идентификатор сеанса.Только идентификатор сессии.Все данные, присвоенные идентификатору сеанса, хранятся на сервере, в файлах или базе данных.Уровень безопасности зависит от того, как долго ваш идентификатор сеанса и используется энтропия.

Мы можем рассмотреть некоторые случаи, когда вы подвергаетесь угону сессии.

Недостаточная длина идентификатора сессии

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

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

Формула взята из здесь

ПослеВ расчетах мы знаем, что среднее время будет примерно таким: 0.6h

Но при использовании ключа с 128-битной энтропией (ключ php немного больше)

Это время будет равно 4.726144e + 28h ( 1.6410222e + 26 лет )

Так что это довольно безопасно, я думаю.

Подавление на стороне сеанса

Представляя, что вы наконец-то реализовали сессии с сильной энтропией.Так что это невозможно угадать с помощью грубой силы.Вы также обеспечили безопасность с помощью https auth endpoint, поэтому никто не сможет прослушать ваш пароль и логин.Но другие части вашего веб-приложения не имеют протокола https.

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

Чтобы предотвратить эту ситуацию, вы должны иметьЗащищены все части вашего приложения с помощью https и используется действующий сертификат.

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

Finalответ

Да, cookie-файлы сеанса могут быть достаточно безопасными, если они соответствуют стандартам безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...