#jsf #tomcat6 #csrf
#jsf #tomcat6 #csrf
Вопрос:
Защита CSRF для веб-приложения на основе JSF и серверной части Tomcat6 без использования каких-либо внешних пакетов. Пожалуйста, помогите.
Ответ №1:
В JSF уже встроена защита от CSRF с помощью javax.faces.ViewState
скрытого поля, которое должно быть связано с состоянием дерева компонентов на стороне сервера. Если это скрытое поле отсутствует или содержит неправильное значение, то JSF просто не обработает запрос POST. В JSF 1.x ключ слишком легко угадать, смотрите также выпуск 812 JSF impl и выпуск 869 JSF spec. Это исправлено в JSF 2.1.
Вашей главной заботой должен быть XSS. Успешная XSS-атака может послужить источником для гарантированно успешной CSRF-атаки. Чтобы избежать XSS, убедитесь, что вы не повторно отображаете управляемый пользователем ввод с помощью <h:outputText escape="false" />
. Кроме этого, JSF уже по умолчанию экранирует HTML-объекты.
Комментарии:
1. @BalusC я прочитал много вопросов CSRF здесь, в stackoverflow. я не уверен на 100%, правильно ли я
javax.faces.ViewState
понял… правда ли, что нет НЕОБХОДИМОСТИ проверять состояние в моем компоненте, что оно работает автоматически? (я всегда просто читал из скрытого поля ввода сjavax.faces.ViewState
, но ни в одном сообщении не сообщал, что я должен делать в компоненте) … спасибо2. хорошо … я протестировал это с помощью firebug… и я получил
javax.faces.application.ViewExpiredException
— игнорируйте мой вопрос 😉