【发布时间】:2012-10-15 03:43:56
【问题描述】:
如何过滤带有特定参数的请求:例如仅过滤带有“csrf-token”参数名称的请求。过滤器将首先检查请求是否具有所需的参数名称并绕过那些没有所需的参数。
下面是我如何设置我的 web.xml 文件,但问题是所有请求都被过滤了:
<filter>
<filter-name>CSRFTest</filter-name>
<filter-class>org.example.CSRFFilter</filter-class>
<init-param>
<param-name>csrf_token</param-name>
<param-value>csrf</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CSRFTest</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CrossSiteScriptStripper</filter-name>
<filter-class>CrossSiteScriptStripperFilter</filter-class>
</filter>
<!-- Apply the CrossSiteScriptStripper filter to all servlets and JSP pages. -->
<filter-mapping>
<filter-name>CrossSiteScriptStripper</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
pb2q 给出的答案正在我的 TEST PROJECT 上工作,但在我的实际项目中插入时出现错误。我想问是否可以使用2个过滤器?
【问题讨论】:
-
一种方法可能是在过滤器类中通过执行 if/else 来省略过滤器链中的所有请求?
-
@Jhays 您可以根据需要链接任意数量的过滤器,您在实际项目中遇到什么错误?
标签: java servlets servlet-filters