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