【问题标题】:Spring security csrf is nullSpring 安全 csrf 为空
【发布时间】:2014-02-04 12:21:14
【问题描述】:

我有登录表单,我想保护它免受 csrf 攻击。

我的 spring-security.xml

<sec:http auto-config="true" use-expressions="true">
    ...
    <sec:csrf />
</sec:http>

我的 jsp 文件(使用图块):

<form class="navbar-form navbar-right form-inline" method="POST" role="form"
  action="j_spring_security_check">
  <div class="form-group">
    <input class="form-control" type="email" name="j_username">
  </div>
  <div class="form-group">
    <input class="form-control" type="password" name="j_password">
  </div>
  <button class="btn btn-default" type="submit">Login</button>

  <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}">
</form>

我可以授权,但是csrf是空的:

<input type="hidden" value="" name="">

谁能帮帮我?

【问题讨论】:

  • 只是为了确定您是否有任何 块?如果是这样,请确保您没有禁用登录表单上的安全性。您确定您的 jstl 设置正确吗?

标签: jsp spring-security csrf


【解决方案1】:

您确定您的 JSTL 设置正确吗?您是否尝试过使用标签?如果以下操作有效,则 JSTL 可能未正确设置:

<c:out value="${_csrf.parameterName}"/>

只是为了确定你有任何障碍吗?如果是这样,请确保您没有禁用登录表单上的安全性。

【讨论】:

    【解决方案2】:

    我已清除 .m2 目录并重新导入所有依赖项。对我有帮助。

    【讨论】:

      【解决方案3】:

      如果您将应用 security="none" 则不会生成 csrf 令牌。页面不会通过安全过滤器。使用角色 ANONYMOUS。

      我没有详细介绍,但它对我有用。

      <http auto-config="true" use-expressions="true">
          <intercept-url pattern="/login.jsp" access="hasRole('ANONYMOUS')" />
          <!-- you configuration -->
      </http>
      

      【讨论】:

        猜你喜欢
        • 2015-04-12
        • 1970-01-01
        • 2021-12-24
        • 2015-11-25
        • 2020-07-07
        • 2019-11-04
        • 2021-09-12
        • 2015-08-17
        • 2016-04-08
        相关资源
        最近更新 更多