Просто интересно, требуется ли для хэширования PHPSESSID для всех форм или скриптов действий для защиты CSRF? Я понимаю, что это может быть получено, если пользователь находится в одной физической сети (firesheep). Пример:CSRF Защита: Хешинг PHPSESSID достаточно?
http://site.com/deleteMessage.php?mid=22&token=MD5ed_PHPSESSID
Игнорирование в той же сети Выдайте PHPSESSID:
1) Is known only to the user doing the action
2) Can not be guessed by an attacker crafting a malicious img or request (<img src="http://site.com/deleteMessage.php?mid=22&token=I_DONT_KNOW_IT_:()
3) Can not be pulled on the same site assuming no XSS vulnerabilities exist.
4) Can easily be pulled by the legitimate user (Javascript fills the form or GET var in the link)
Количество 3 беспокоит меня, хотя у меня нет каких-либо уязвимостей XSS, что я знаю, как я htmlentities ($ string, ENT_QUOTES) все, я не люблю полагаться на предположения. Является ли это достаточной защитой CSRF или есть лучший способ?
Чтобы избежать таких нападений, как Firesheep, вы должны заставить HTTPS использовать все, для чего вы хотите пройти аутентифицированные сеансы. –
@ Lèse majesté правда, но это не имеет никакого отношения к его вопросу. Возможно, вам стоит поговорить с stackoverflow об использовании https (или отсутствовать там). – rook
@Rook: Это не ответ на вопрос (следовательно, почему я сделал комментарий), но он конкретно упоминает о потенциале Firesheep, который фиксирует его токен CSRF, если он используется в ненадежной сети. –