Перехват сеанса и PHP

Давайте просто рассмотрим доверие, которое сервер имеет к пользователю.

Фиксация сеанса: Чтобы избежать фиксации, я использую session_regenerate_id () ТОЛЬКО в аутентификации (login.php)

Session sidejacking : SSL-шифрование для всего сайта.

Я в безопасности?

11
задан Machavity 19 July 2018 в 17:55
поделиться

3 ответа

Чтение OWASP Аутентификация и управление сеансом A3 . Также прочтите о OWASP A5-CSRF , который иногда называют «сеансовым управлением».

Вы должны использовать этот код в файле заголовка php:

ini_set('session.cookie_secure',1);
ini_set('session.cookie_httponly',1);
ini_set('session.use_only_cookies',1);
session_start();

Этот код предотвращает фиксацию сеанса . Это также помогает защитить от xss при доступе к document.cookie , что является одним из способов возможного взлома сеанса . Применение файлов cookie только для HTTPS является хорошим способом решения проблемы OWASP A9-Недостаточная защита транспортного уровня . Такой способ использования HTTPS иногда называют «безопасными файлами cookie», что является ужасным названием для него. Также STS - очень хорошая функция безопасности, но не все браузеры поддерживают ее (пока).

28
ответ дан 3 December 2019 в 02:51
поделиться

Я бы также предложил сохранять в сеансе информацию о пользовательском агенте и IP-адресе и проверять ее при каждом запросе. Он не пуленепробиваемый, но его надежность значительно повысилась. В то время как подделка UA действительно проста, подделка IP, хотя и возможна, НАМНОГО сложнее ... Но у вас могут быть проблемы с пользователями, которые используют систему IP с циклическим перебором, такими как пользователи AOL ...

2
ответ дан 3 December 2019 в 02:51
поделиться

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

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

0
ответ дан 3 December 2019 в 02:51
поделиться
Другие вопросы по тегам:

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