如何防止Servlet中的CSRF?我在网上搜索了这个并发现以下过滤器配置会阻止,但我想了解这些过滤器配置是如何工作的。
<filter>
<filter-name>CSRFPreventionFilter</filter-name>
<filter-class>
org.apache.catalina.filters.CsrfPreventionFilter
</filter-class>
<init-param>
<param-name>entryPoints</param-name>
<param-value>/PATH</param-value>
</init-param>
</filter
<filter-mapping>
<filter-name>CSRFPreventionFilter</filter-name>
<url-pattern>/PATH/*</url-pattern>
</filter-mapping>
I am using Tomcat 6 server and java 6.
答案 0 :(得分:0)
请阅读the source code。它非常简短。
摘录:
String previousNonce =
req.getParameter(Constants.CSRF_NONCE_REQUEST_PARAM);
if (nonceCache == null || previousNonce == null ||
!nonceCache.contains(previousNonce)) {
res.sendError(getDenyStatus());
return;
}
如何使用过滤器:
https://tomcat.apache.org/tomcat-6.0-doc/config/filter.html#CSRF_Prevention_Filter
有关CSRF的更多详情:
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet