Давайте просто рассмотрим доверие, которое имеет сервер к пользователю.
Фиксация сеанса: во избежание фиксации я использую «session_regenerate_id ()» ТОЛЬКО при аутентификации (login.php)
Session sidejacking: шифрование SSL для всего сайта.
Я в безопасности?
Благодарю.
Прочитайте OWASP A3-Broken Authentication и Session Management . Также читайте о 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 иногда называют «безопасным куки», что является ужасным именем для него. Также STS – очень классная функция безопасности, но не все браузеры поддерживают ее (пока).
Я также предлагаю хранить в сеансе пользовательский агент и информацию об IP-адресе и проверять его при каждом запросе. Это не пуленепробиваемый, но это довольно значительное увеличение надежности. В то время как ковка UA действительно легка, IP-ковка, хотя это возможно, намного сложнее … Но у вас могут быть проблемы с пользователями, которые находятся за круглой системой IP, такой как пользователи AOL …
наилучшей практикой, которую я когда-либо находил, является сохранение данных сеанса в базе данных или текстовом файле. база данных будет иметь пользовательский агент и запись IP и проверять каждый запрос, чтобы убедиться, что сеанс никогда не был захвачен другим.
например, как сеанс, сохраненный в базе данных, вы можете увидеть реализацию в библиотеке сеансов codeigntier. на мой взгляд, этот способ достаточно сэкономит, чтобы кто-то не смог выполнить сеанс hijact.