如何在Spring启动应用程序中进行REST调用而不在Spring安全性中禁用CSRF保护?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Spring启动应用程序中进行REST调用而不在Spring安全性中禁用CSRF保护?相关的知识,希望对你有一定的参考价值。

有关于Spring安全csrf保护的问题。仅当我从像Postman这样的REST客户端进行REST调用时,CSRF是否会触发403状态?它是否在从我们的代码进行REST调用时触发403状态?如果是,如何保持csrf保护并进行REST调用?

答案

您需要为所有请求包含CSRF令牌,其中包含一个“受保护”HTTP谓词(PATCH,POST,PUT,DELETE),无论请求源自何处(邮递员或浏览器)。

例如,Spring documentation表示,如果您使用AJAX,建议将CSRF令牌包含在meta标记中:

<html>
<head>
    <meta name="_csrf" content="${_csrf.token}"/>
    <!-- default header name is X-CSRF-TOKEN -->
    <meta name="_csrf_header" content="${_csrf.headerName}"/>
    <!-- ... -->
</head>
<!-- ... -->

即使使用邮递员,也可以使用它来自动化提取和包含令牌的过程(而不必每次从登录响应中手动检索CSRF令牌)。您可以查看以下问题以获取更多详细信息:How do I send spring csrf token from Postman rest client?

以上是关于如何在Spring启动应用程序中进行REST调用而不在Spring安全性中禁用CSRF保护?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Data Rest - 在 Json 中禁用自我链接(HAL)

Spring + Hibernate+ HikariCP:如何在进行长时间运行的 REST 调用时处理数据库连接?

Jason中的Spring Data Rest -Disable自我链接(HAL)

如何使用 power mock 对 Spring Boot Rest 控制器和异常处理程序进行单元测试

如何使用 Spring 在单元测试中模拟远程 REST API?

如何在启动期间终止 Spring 应用程序?