【问题标题】:Setting up CsrfPreventionFilter in Tomcat在 Tomcat 中设置 CsrfPreventionFilter
【发布时间】:2017-10-25 10:14:56
【问题描述】:

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

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

我有home.jspreports.jsp

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

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

如果我按 CTRL+N,然后输入 www.example.com/reports.jsp,然后添加相同的随机数,即 www.example.com/reports.jsp?org.apache.catalina.filters.CSRF_NONCE=5E4BD8FEE1B4CC1DA79D874905015911,然后我会得到第 403 页。reports.jsp 没有设置为入口点,但我希望它成功渲染,因为它提供了一个随机数。

我做错了什么?

(我的问题有点类似于Getting 403 error when using CSRF filter with tomcat 6.0.32;但我觉得答案可能不是CSRFPrevention过滤器的设置方式,而是我在内部处理响应/请求的方式可能存在一些问题,类似于@Pankaj Kumar 在Not able to authenticate post request for CSRF token with tomcat 中的回答)

更新

这里是 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>  

【问题讨论】:

  • filter-mapping 是什么CsrfPreventionFilter
  • 我用 web.xml 配置更新了我的问题
  • home.jsp 上有多少链接 - 更具体地说是对 response.encodeUrl() 的调用。

标签: jsp tomcat csrf-protection


【解决方案1】:

您需要从entryPoints 中删除 js、css 和图像路径,并为CsrfPreventionFilter 设置过滤器映射,使其不包含它们。

原因是在tomcat中nonceCache的大小默认为5。在您请求 js、css 的情况下,tomcat 生成一个新的 nonce(因为它们在 entryPoints 中)并将其添加到缓存中,在 5 个此类请求之后,您的初始 nonce(为 home.jsp 生成)被从 nonceCache 中刷新并且没有有效期更长。因此,当您使用该随机数发送合法请求时,您会得到一个 403

【讨论】:

    猜你喜欢
    • 2011-12-23
    • 2013-06-26
    • 1970-01-01
    • 2011-08-16
    • 2013-04-24
    • 2010-12-28
    • 2021-07-16
    • 2019-01-25
    • 2020-09-02
    相关资源
    最近更新 更多