Методы токенов Struts 1 Action работают как перехватчик токенов Struts 2, так как они добавляют токен в ваш сеанс и проверяют его при отправке формы, но это гораздо более ручной процесс.Основной рабочий процесс:
- Пользователь получает форму через действие Struts (не напрямую в JSP).Действие Struts вызывает
saveToken(request)
перед пересылкой на JSP, который содержит форму. - Форма в JSP должна использовать тег
<html:form>
. - Ваше действие, которое форма отправляет всначала вызовет
isTokenValid(request, true)
, и вам следует перенаправить обратно к первому действию с сообщением об ошибке, если оно вернет false
.Это также сбрасывает токен для следующего запроса.
Это не только предотвратит повторные отправки формы, но и любому сценарию придется выполнить первое действие Struts и получить сеанс, прежде чем он сможет его передать второму.Struts Action для отправки формы.Поскольку сайт не может установить сеанс для другого сайта, это должно предотвратить CSRF.
Если вы обычно отправляете пользователей непосредственно в JSP, не делайте этого.Вместо этого создайте новый класс, унаследованный от ActionForward
, и установите его как метод execute()
:
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
saveToken(request);
return super.execute(mapping, form, request, response);
}