Я пытаюсь добавить защиту CSRF в веб-приложение Java. У меня настроен файл web.xml с фильтром CSRF и сопоставлением фильтров с сервлетами. Однако я не уверен, как сделать следующую часть. в документации говорится, что все URL-адреса, возвращаемые клиенту, кодируются с помощью вызова HttpServletResponse#encodeRedirectURL(String) или HttpServletResponse#encodeURL(String). Они также говорят, что вы можете попробовать: Или можно передать одноразовый номер в качестве параметра запроса с именем org. apache.catalina.filters.CSRF_NONCE — значение константы org.apache.catalina.filters.Constants.CSRF_NONCE_REQUEST_PARAM.
ОБНОВЛЕНИЕ Я все еще не могу получить ошибку 403 "запрещено". у кого-нибудь есть предложения? Вот настройка web.xml:
<filter>
<filter-name>CSRF</filter-name>
<filter-class>org.apache.catalina.filters.CsrfPreventionFilter</filter-class>
<init-param>
<param-name>entryPoints</param-name>
<param-value>/html,/html/</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CSRF</filter-name>
<servlet-name>exampleservlet</servlet-name>
</filter-mapping>
Вот код страницы JSP
<FORM METHOD="POST" ACTION="<%=response.encodeURL("/exampleservlet")%>">
<INPUT TYPE="HIDDEN" NAME="org.apache.catalina.filters.CSRF_NONCE" VALUE="<%=session.getAttribute("org.apache.catalina.filters.CSRF_NONCE")%>">
<INPUT TYPE="HIDDEN" NAME="id" VALUE="0">
Что я делаю не так?