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

Spring Boot不需要CSRF令牌

燕元明
2023-03-14

我有一个Spring Boot 1.5.12应用程序,默认情况下会启用CSRF保护。我在提交POST请求时使用CSRF令牌。

但是,有些URL需要通过GET请求获取,带有cookie信息,但不需要CSRF令牌,即。

<a href="/stuff"><i class="stuff-xs"></i><span>Stuff</span></a>

我如何强制我的Spring Boot应用程序也需要CSRF令牌来处理这样的请求?

PS:我有一些关于GET请求不需要CSRF保护的意见。但是,它也应该受到保护:https://www.acunetix.com/websitesecurity/csrf-attacks/

共有2个答案

翁凯定
2023-03-14

如果我正确理解了这个问题,那么您希望通过GET请求发送CSRF令牌。

但是GET或HEAD HTTP谓词不需要CSRF保护。他们自动免疫CSRF。

CSRF主要诱骗用户在恶意网页上进行某些活动,然后在原始网页中触发POST、PUT或DELETE动词,模拟受害者用户。

消息是,由于同源策略,CSRF无法读取任何内容。它完全基于利用不安全的HTTP方法,如POST、PUT和DELETE。

因此,GET或HEAD动词不需要csrfcookie。

罗茂实
2023-03-14

CSRF的思想是防止修改您未启动的数据。假设GET方法不能修改数据,这就是为什么在没有CSRF令牌的情况下调用任何GET URL都是安全的。但如果您在GET上实现了一些数据更改,那么您应该更改逻辑并将其移动到PUT、POST、DELETE或PATCH方法。

 类似资料:
  • 问题内容: 因此,我对PHP文件有了一个基本的.ajax()POST方法。 我需要什么安全措施? 周围有几篇文章提到使用隐藏的MD5输入字段,您可以通过AJAX发送该字段并在PHP文件中进行验证。这足够好吗? 问题答案: CSRF的风险在于,外部站点可能会将数据发送到您的站点,而用户浏览器会自动将身份验证cookie与它一起发送。 您需要某种方式来执行接收操作(您的方法正在向其发送POST数据),

  • 用户使用门户LoginPortlet进行登录后,登录失败,并在日志中打印警告: 第二次登录后,登录正常。只有在登录页面打开几分钟后,身份验证令牌失效时,才会出现问题。这基本上是好的,但是portal config包含LoginPortlet的排除项。但这份白名单似乎无法避免不必要的检查。还有其他地方可以避免CSRF检查LoginPortlet吗?

  • 问题内容: 我正在使用Django 1.7和django-rest-framework。 我制作了一个API,该API返回了一些JSON数据,并将其放入了我的 settings.py 当我进行GET调用时,它将返回我所有的数据,但是当我尝试使用PUT / PATCH时,我得到: 仅当我登录时才会发生这种情况,如果我是匿名用户,则可以正确进行PUT / PATCH。 我尝试过,但遇到错误,我将设置包

  • 我搜索了很多stackoverflow,但没有找到解决问题的方法。当将SpringBoot应用程序作为WAR文件部署到Tomcat 8时,我发现以下错误,在本地它确实可以正常工作 有一个接口 和两个实现类 和二等舱 还有Rest服务 所以我不明白Tomcat怎么找不到像boolean这样的原始数据类型,也不明白为什么我在本地运行它时它能工作。 任何帮助都将不胜感激 问候马蒂亚斯

  • 已删除MyTestConfig.class,但问题仍然相同。即使我使用@SpringBootTest(classes={Application.Class,MyProblematicServiceImpl.Class}),它仍然在自动连线的地方返回模拟对象。MyProblematicServiceImpl是用@Service注释的空类。

  • 我使用的是Spring Security 3.2.0。带有Java配置的RC2。我设置了一个简单的HttpSecurity配置,要求在/v1/**上进行基本身份验证。GET请求正常,但POST请求失败: 我的安全配置如下所示: 对此有任何帮助,非常感谢。