Проверка CSRF с использованием Tomcat 6 без использования внешних пакетов

#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 — игнорируйте мой вопрос 😉