Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 在Tomcat中设置CsrfPreventionFilter_Jsp_Tomcat_Csrf Protection - Fatal编程技术网

Jsp 在Tomcat中设置CsrfPreventionFilter

Jsp 在Tomcat中设置CsrfPreventionFilter,jsp,tomcat,csrf-protection,Jsp,Tomcat,Csrf Protection,我正在尝试在Tomcat 8中设置内置的CsrfPreventionFilter 我想我已经阅读了StackOverflow中关于这个主题的所有问题和答案,但我仍然无法解决我的问题 我有home.jsp和reports.jsp home.jsp(一旦它接受了response.encodeUrl())的URL是 www.example.com/home.jsp?org.apache.catalina.filters.CSRF_NONCE=5E4BD8FEE1B4CC1DA79D8749050159

我正在尝试在Tomcat 8中设置内置的CsrfPreventionFilter

我想我已经阅读了StackOverflow中关于这个主题的所有问题和答案,但我仍然无法解决我的问题

我有
home.jsp
reports.jsp

home.jsp
(一旦它接受了
response.encodeUrl()
)的URL是
www.example.com/home.jsp?org.apache.catalina.filters.CSRF_NONCE=5E4BD8FEE1B4CC1DA79D874905015911

这是正确呈现的,不是因为nonce正在工作,而是因为我将
home.jsp
设置为入口点。然而,它似乎证明了CSRFPreventionFilter已经启动并运行,并且成功地生成了nonce

如果我按CTRL+N,然后输入
www.example.com/reports.jsp
,然后添加相同的nonce,即
www.example.com/reports.jsp?org.apache.catalina.filters.CSRF_nonce=5E4BD8FEE1B4CC1DA79D874905015911
,那么我将得到第403页
reports.jsp
未设置为入口点,但我希望它能够成功呈现,因为它提供了nonce

我做错了什么

(我的问题有点类似于;但我觉得答案可能不是CSRFPrevention过滤器的设置方式,而是我在内部处理响应/请求的方式中的一些问题,类似于@Pankaj Kumar在中的回答)

更新

下面是web.xml配置

<filter>
    <filter-name>CSRFPreventionFilter</filter-name>
    <filter-class>org.apache.catalina.filters.CsrfPreventionFilter</filter-class>
        <init-param>
            <param-name>entryPoints</param-name>
            <param-value>/images/404.JPG,/login.jsp,/home.jsp,/images/im_login.gif,/js/events.js,/js/menu.js,/js/amount_validation.js,/js/calendar.js,/js/toolbar.js,/js/tablesort.js,/js/scripts.js,/css/style.css</param-value>
        </init-param>
</filter>

<filter-mapping>
    <filter-name>CSRFPreventionFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>  

防止过滤器
org.apache.catalina.filters.CsrfPreventionFilter
入口点
/images/404.JPG、/login.jsp、/home.jsp、/images/im\u login.gif、/js/events.js、/js/menu.js、/js/amount\u validation.js、/js/calendar.js、/js/toolbar.js、/js/tablesort.js、/js/scripts/scripts/css/style.css
防止过滤器
/*

您需要从
入口点
中删除js、css和图像路径,并为
CsrfPreventionFilter
设置过滤器映射,使其不包含这些路径


原因是在tomcat中,默认情况下,nonecache的大小为5。在您的情况下,当js、css被请求时,tomcat会生成一个新的nonce(因为它们位于入口点中)并将其添加到缓存中,在5个这样的请求之后,您的初始nonce(为home.jsp生成)将从nonecache中清除,不再有效。因此,当您使用该时间发送合法请求时,会得到一个
403

对于
CsrfPreventionFilter
,什么是
过滤器映射
?我用web.xml配置更新了我的问题home.jsp上有多少链接-更具体地说是调用
response.encodeUrl()