Проверка браузера - это полная и полная трата кода. Нет смысла писать защищенную систему, которая является тривиальной , которую злоумышленник может обойти. Если злоумышленник получит идентификатор сеанса через xss или прослушивание строки, он также получит ваш «пользовательский агент».
Проверка IP-адреса заставит злоумышленника «покататься» на сеансе с XSS + XHR или XSRF. Это потому, что похищенный токен не будет работать на его коробке. К сожалению, это также создает проблемы для корпоративных сетей, которые используют балансировку исходящей нагрузки между несколькими IP-адресами.
HTTPS - это , который должен использоваться для всего сеанса . Ни в коем случае ваш токен не может быть отправлен по HTTP. Это ясно изложено в «Сломанной аутентификации и управлении сессиями» в Топ-10 OWASP за 2010 год , которую вы обязательно должны прочитать, если пишете обработчик сеанса.
Идентификаторы сеанса должны всегда истекать. Если они этого не делают, это называется бессмертным сеансом, который является признанной уязвимостью.
Еще больше меня беспокоит случайность вашего токена. Убедитесь, что вы изучили, как правильно генерировать криптографический одноразовый номер . Убедитесь, что ваш генератор случайных чисел силен и заполнен информацией, которую злоумышленник не может знать.
Я также подозреваю, что вы не приняли во внимание XSS и XSRF. Неважно, насколько сильна ваша сессия в других областях, если вы оставите без внимания основную уязвимость. Убедитесь, что вы сканируете свое приложение, используя бесплатный xss сканер или wapiti с открытым исходным кодом. Имейте в виду, что ни один тест не будет точно определять XSRF, и каждый отдельный запрос в вашем приложении уязвим, если вы не исправите его.