Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Защита PHPSESSID


Автор: EntityFx 2.10.2010, 11:19
Как защититься от замены значения PHPSESSID при котором доступ к сессии может нарушиться. 
Провёл один тест: создал сессии в двух браузерах. Заменил PHPSESSID из 1 браузера во втором.
Теперь я имею доступ к одной сессии в обоих браузерах. Вдруг случайно (?) при замене смогут получить доступ к другой сессии

Был 1 вариант защиты: создать в куках значение SECRET=md5(session_id()."string"); 

При каждом запуске сессии сранивать значение SECRET и md5(session_id()."string").

Если поменяют значение PHPSESSID или SECRET, то должно выкидывать.

Пожалуйста, предложите более оптимальный вариант.  smile 

Автор: ksnk 2.10.2010, 12:58
EntityFx, в сессию можно записать информацию, передаваемую браузером - ip адрес, агент броузера, сопутствующий мусор про прокси. при получении Id сессии читать из нее все это и грязно ругаться в некоторых случаях.
Надо только представлять себе, что у добропорядочных пользователей:
- ip может поменяться в одной и той-же сесии, например, юзер пользуется мобильным устройством и быстро едет. Единственная радость - это не может случатся уж очень часто.
- прокси-мусор может поменяться непредсказуемым образом в зависимости от неопределенных причин

А недобропорядочные юзеры могут все это подделать. Включая куки.

Если информация настолько важна, что стоит возится с защитой - используй https.

Автор: EntityFx 2.10.2010, 13:14
Да, IP как-то не катит. Если используют прокси, либо у нескольких клиентов один внешний IP.

Автор: EntityFx 2.10.2010, 13:37
А если как вариант сделать JavaScipt, который по таймеру смотрит куки и восстанавливает первоначальное состояние?

Не, это сильно жёстко.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)