当前位置: 首页 > 知识库问答 >
问题:

如何为我的网站中的特定页面禁用csrf保护?

年光明
2023-03-14

使用CSRF保护,这样从其他网站发出的任何请求都不会影响我的网站造成伤害。在Spring安全csrf留档中说,csrf应用于放帖补丁删除请求。

但据我了解,登录/注册表单不需要csrf保护,因为它们已经需要用户名和密码形式的凭据,即使是从另一个网站发出这样的请求,也不会有任何伤害,因为用户只需登录即可。

但是由于登录通常是一个发布请求,csrf将在Spring默认情况下自动应用。这意味着我需要将csrf令牌生成参数作为隐藏输入字段添加到我的表单中,如下所示:

<form th:action="@{/login}" method="post">    
    <fieldset>
        <input type="hidden" 
             th:name="${_csrf.parameterName}" 
             th:value="${_csrf.token}" />
    </fieldset>
    ...
</form>

如果我不加上这个,403禁止的错误就会出现。但如果我像这样禁用csrf

@Override
protected void configure(HttpSecurity http) throws Exception {
    html" target="_blank">http.csrf().disable();
}

然后所有页面都会失去网站中的csrf保护。我如何将csrf应用于某些页面,而不是其他页面,即使他们正在发出帖子请求?

我使用的是Spring Boot Spring Security thymeleaf

共有1个答案

花飞尘
2023-03-14

您可以使用。csrf()。在configure(HttpSecurity http)

csrf()。ignoringAntMatchers(“字符串”)

允许指定不应该使用CSRF保护的HttpServletRequest,即使它们与所需的Csrf保护匹配器(请求匹配器)匹配。

例如,以下配置将确保CSRF保护忽略:

  • 任何GET、HEAD、TRACE和OPTIONS(这是默认设置)
  • 我们还明确声明忽略以“/sockjs/”开头的任何请求
    http
          .csrf()
              .ignoringAntMatchers("/sockjs/**")
              .and()
          ...

. csrf()。

允许指定不应该使用CSRF保护的HttpServlet请求,即使它们与所需的Csrf保护匹配器(请求匹配器)匹配。

例如,以下配置将确保CSRF保护忽略:

  • 任何GET、HEAD、TRACE和OPTIONS(这是默认设置)
http
     .csrf()
         .ignoringRequestMatchers(request -> "XMLHttpRequest".equals(request.getHeader("X-Requested-With")))
         .and()

 类似资料:
  • 我使用Spring Boot和Spring Security创建我的web项目。我想禁用特定URL模式的CSRF保护,为Android设备提供API。 使用 如何通过XML配置和 Spring Boot的第一种方法:仅对某些请求选择性地启用CSRF检查 我写了以下配置: 运行此项目时,我会出现以下错误: 上面的日志显示正则表达式在 在索引6/api/**附近有悬挂的元字符“*”。但我不知道这个错误

  • 我如何在Drupal 9中禁用特定页面的缓存,我找到了一个解决方案,但它用于禁用所有页面的缓存,解决方案是:在settings.yml中添加此代码: 这是工作,但我只想禁用特定页面的缓存。谢谢。

  • 问题内容: django csrf中间件无法禁用。我已经从我的项目的中间件中将其注释掉,但是由于缺少CSRF问题,导致登录失败。我正在使用Django主干。如果未在中间件中启用CSRF,如何引起问题? 我必须禁用它,因为CSRF刚刚中断了我站点上的许多POST请求。关于如何在django主干项目中完全禁用CSRF的任何反馈? Django主干中的“新” CSRF框架也破坏了一个外部站点,该站点正在

  • 我正在寻找禁用特定页面的手势。我遇到了许多帖子,建议将MasterDetailPage的设置为false以禁用它。这有效,但出于某种原因并不总是如此。 目前我只想在登录页面禁用手势,所以在身份验证时我启用手势,在出现时我禁用。 我遇到的问题是,如果用户切换应用程序并返回并退出,手势仍然启用。这让我认为正在触发不同的MasterDetailePage上下文。 有没有人遇到过这个问题,或者对我有什么指

  • 本文向大家介绍如何使用CSS为网站创建关于/关于我们的页面?,包括了如何使用CSS为网站创建关于/关于我们的页面?的使用技巧和注意事项,需要的朋友参考一下 要创建一个About页面,代码如下- 示例 输出结果 上面的代码将创建以下输出-

  • 问题内容: 我有一个login.html网页,允许用户输入用户名和密码。当他单击“提交”时,我将使用Javascript收集输入的值,然后对php文件进行Ajax POST调用,然后发送用户名和密码。 我在这里担心的是,这是发送用户名和密码的安全方法吗?如果不是,我如何确保从后端将数据从html文件发送到php的交易的安全性? php文件然后连接到MySql Db并检查用户是否退出以及密码是否正确