【问题标题】:Getting 403 error when using CSRF filter with tomcat 6.0.32将 CSRF 过滤器与 tomcat 6.0.32 一起使用时出现 403 错误
【发布时间】:2014-05-28 21:07:24
【问题描述】:

这是我在 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>/login<param-value>
    </init-param>
</filter>

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

我错过了什么吗?在 tomcat 中启用 csrf 保护是否需要进行任何代码更改

【问题讨论】:

    标签: security tomcat csrf


    【解决方案1】:

    注意 403CSRFPreventionFilter 响应,如果未提供随机数并且过滤器需要随机数。

    我不知道 CSRFPreventionFilter 的当前状态,但根据this thread,您需要单独指定每个 entryPoint 资源(无通配符) - 或者拥有过滤器应用于不包含 /login

    的路径

    所以:

    <filter>
    <filter-name>CSRFPreventionFilter</filter-name>
    <filter-class>org.apache.catalina.filters.CsrfPreventionFilter</filter-class>
    <init-param>
        <param-name>entryPoints</param-name>
        <param-value>/login/login.html,/login/image.png,/login/style.css</param-value>
    </init-param>
    </filter>
    

    或者:

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

    2012 年 12 月更新:

    Tomcat 7.0.32 修复了 CSRFPreventionFilter

    中的一个安全漏洞

    【讨论】:

    • 感谢您的解释。所以我现在的问题是我是否需要更改我的 jsps 中的任何内容来发送随机数,或者 tomcat 会处理这个问题。因为据我了解,getRedirectUrl 方法已被此文件管理器覆盖,因此我的代码中的任何链接都会自动处理。但是我页面中的表单呢?
    • 我还没有真正尝试过 - 但我希望表单操作需要 encodeUrl()。
    • 谢谢.. 我想我也必须发送隐藏参数以防表单帖子
    • 这个过滤器有更新吗?我目前遇到了同样的问题,但有超过 300 个 jsp,每个都有多个链接。如果有人想出一些办法来避免用“urlEncode”包装每个链接,我会很高兴
    • @james Donnelly,param-value 仅用于跳过入口点的资源,我也面临同样的问题。你有什么解决方案,我以同样的方式尝试过,但总是得到拒绝访问 403 页面。参考:help.hana.ondemand.com/help/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 2018-06-16
    相关资源
    最近更新 更多