Как JSF 2.0 предотвращает CSRF - PullRequest
10 голосов
/ 02 января 2012

Я исследую материал, который я регулярно слышу, что при работе с веб-приложением в JSF 2.0 вы уже защищены от межсайтовых скриптов и подделки запросов. Следующая выдержка из сообщения SO подтверждает это:

В JSF 2.0 это было улучшено за счет использования длинного и сильного автоматически сгенерированного значения вместо довольно предсказуемого значения последовательности, что делает его надежной профилактикой CSRF.

Может ли кто-нибудь рассказать об этом подробнее? Как это автоматически сгенерированное значение предотвращает CSRF? Спасибо!

Ответы [ 2 ]

11 голосов
/ 02 января 2012

Как это автоматически сгенерированное значение предотвращает CSRF?

Поскольку его невозможно угадать.Таким образом, злоумышленник не может жестко закодировать его в скрытом поле в виде веб-сайта атаки (если на целевом сайте нет дыры XSS и, следовательно, значение может быть просто получено непосредственно средствами XSS).Если значение недопустимо для JSF, то форма, отправленная с сайта атаки, просто не будет обработана, а вместо этого сгенерирует ViewExpiredException.Обратите внимание, что злоумышленнику по-прежнему необходимо получить идентификатор сеанса, чтобы его можно было передать обратно через атрибут jsessionid URL, поэтому изначально «слабой» защите CSRF все равно потребовалась бы некоторая дыра XSS для получения идентификатора сеанса.

В конце концов, у меня сложилось впечатление, что вы вообще не понимаете, что такое CSRF;Ответ довольно понятен, если вы понимаете, что такое CSRF.В этом случае, пожалуйста, проверьте следующий вопрос: Есть ли у меня риск CSRF-атак в форме POST, не требующей входа пользователя в систему?

6 голосов
/ 03 января 2012

Следует помнить, что CSRF-защита в JSF 2.0 неявна и действительна только для запросов POST.

В JSF 2.2 будет более явная поддержка этого.Я кратко объяснил это здесь: http://arjan -tijms.omnifaces.org / p / jsf-22.html

...