Рассмотрим следующий PHP-скрипт:
<?php
session_start();
echo session_id();
Когда вы открываете эту страницу через браузер, вы должны увидеть идентификатор сессии , сгенерированный сервером.
Для стандартного phpПри установке .ini этот идентификатор сеанса может иметь длину 32 символа в диапазоне от 0 до 9 av (5 бит на символ). Пример:
va9o92iefqoe0ouiado99r9hr299oamc
Теперь предположим, что вы вручную изменили в браузере идентификатор сеанса cookie с va9o92iefqoe0ouiado99r9hr299oamc
на z
, а затем снова получили доступ к вышеуказанному сценарию:
СначалаЯ ожидал бы, что PHP должен быть достаточно умным, чтобы признать, что такой идентификатор сеанса не был сгенерирован сервером, и поэтому его следует игнорировать, а новый должен генерироваться на стороне сервера. К сожалению, этого не происходит. На самом деле, PHP просто движется вперед с z
в качестве идентификатора сеанса.
Я не уверен, как злоумышленник может это использовать, но мне не нравится идея создания идентификатора сеанса на стороне клиента.
Вопрос
Я что-то упустил? Если нет, то как укрепить сессию PHP, чтобы смягчить такую проблему?