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

Spring中的CSRF+Thymeleaf+Ajax+Restful API

魏煜祺
2023-03-14

我已经在Spring+Thymeleaf应用程序中启用了CSRF。好的一点是,Thymeleaf可以自动地将CSRF添加到HTML中的每个

中。问题是提交这些表单的Ajax调用现在失败了,我想知道是否有一个标准的解决方案。

另一方面,另一个问题是我的应用程序将支持Restful API。当我在应用程序中启用CSRF时,使用API从客户端进行身份验证失败。所以问题是,是否有一种方法可以为web浏览启用CSRF,并为我的Restful API禁用它?另一方面,如果攻击者知道restful API,禁用CSRF会使它们容易受到攻击。那么这里的最佳实践是什么呢?

谢谢

共有1个答案

张鸿志
2023-03-14

对于第一个使用ajax调用提交表单的场景,您需要在表单中手动添加csrf生成的隐藏输入。对于第二种情况,您可以从拦截器中排除一些url,在您的情况下,您可以从CSRF拦截器中排除url。

Spring3.2中提供了exclude标记

    <mvc:interceptor>
<mvc:exclude-mapping path="/your_url"/> 
</mvc:interceptors>
 类似资料:
  • 不知道有没有人能帮上忙。 我正在做一个Spring/WebFlow/Tiles/Thymeleaf项目。一切都相当顺利。我们有表示数据输入表单的瓷砖,通常如下所示: 这很管用。但现在我们正在尝试为表单添加一些ajax魔法。基本上,这个想法是当按钮被按下时,它会触发一个webflow转换,这个转换将在一个平铺中呈现它的响应。这一切都运行良好...期待片段瓦片的内容。想法是新片段将是一些额外的表单字段

  • 我正在用Spring MVC3.2和Thymeleaf模板引擎构建应用程序。我是沉香酒的初学者。 我有一切工作,包括Thymeleaf,但我想知道是否有人知道一个简单明了的图图如何做简单的Ajax请求控制器,结果只呈现一个模板的一部分(片段)。

  • 问题内容: 我正在尝试在我的Symfony 2项目中实现一些Ajax功能。我想使用jquery的$ .post将一些数据发送回我的控制器。但是,当我仅POST数据时,就没有CSRF保护,因为symfony的csrf保护似乎仅适用于表单。 什么是实现此目的的简单方法? 使用表单时,我可以执行$ form-> isValid()来确定CSRF令牌是否通过。我目前正在将要发布的所有内容放入表单中,然后发

  • 问题内容: 我想通过AJAX发送登录数据来对用户进行身份验证,但是由于CSRF,这是不可能的。您能否告诉我要添加到代码中以使其正常工作的内容? 我的JavaScript文件: 问题答案: 这里介绍一种方法。 它包括在每个ajax请求上添加X-CSRFToken标头。 这是通过挂钩jQuery.ajaxSend事件来完成的,因此所有操作都是自动完成的(您只需复制并粘贴其代码,并在发出第一个ajax请

  • 我试图在我的symfony2项目中实现一些ajax功能。使用jquery的$。张贴我想发送一些数据回我的控制器。然而,当我刚刚发布数据时,没有CSRF保护,因为symfony的CSRF保护似乎只适用于表单。 有什么非常简单的方法来实现这一点? 使用表单时,我可以只做$form-

  • 问题内容: 我这里有一个问题,当我尝试使用ajax(POST)发布内容时,我总是收到错误消息。我知道正是CSRF给我带来了这些问题,并且我已经来回尝试了寻找解决方案的过程。但是,我希望这里有人可以帮助我! 这是我不断收到的错误(来自Google Chrome浏览器), 未能加载资源:服务器响应状态为500(内部服务器错误),XHR已完成加载:“ http:// localhost / woho /