【问题标题】:Tomcat RestCsrfPreventionFilter - cannot get CSRF nonceTomcat RestCsrfPreventionFilter - 无法获取 CSRF 随机数
【发布时间】:2018-04-13 14:23:22
【问题描述】:

我在 Tomcat 中为我的 REST API 启用了 RestCsrfPreventionFilter。在较高的水平上,它基本上是正确的。由于请求中没有 CSRF 随机数,任何修改我的应用程序状态(即 POST、PUT 等)的端点都会被拒绝。

我遇到的问题是我似乎无法从 CSRF 随机数开始。我尝试过的任何请求都没有将此令牌返回给我。如果我无法从服务器获取 CSRF 随机数,我应该如何返回它?

我已经浏览了那里的每一份文档。我只是看不到任何迹象表明我应该如何获得随机数。

过滤器配置:

<filter>
        <filter-name>RestCSRF</filter-name>
        <filter-class>org.apache.catalina.filters.RestCsrfPreventionFilter</filter-class>
        <init-param>
            <param-name>denyStatus</param-name>
            <param-value>403</param-value>
        </init-param>
        <init-param>
            <param-name>pathsAcceptingParams</param-name>
            <param-value>/rest/*</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>RestCSRF</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

【问题讨论】:

  • 你是如何尝试获得随机数的?
  • 你能解决这个问题吗?我正在使用 Tomcat 8.5 并且有同样的问题。通过发送标头“X-CSRF-Token”设置为“FETCH”的 GET 请求来请求随机数

标签: tomcat csrf


【解决方案1】:

这里的解决方案很简单。任何带有 X-CSRF-TOKEN=fetch 标头的有效 GET 请求都将在同名的响应标头中返回随机数。然后我在 POST 或其他请求中设置 X-CSRF-TOKEN=[NONCE]。

【讨论】:

    猜你喜欢
    • 2018-07-10
    • 1970-01-01
    • 2014-04-02
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多