spring-data-jpa Sping Boot 中的Rest API是否需要CSRF令牌

ybzsozfc  于 2022-11-10  发布在  Spring
关注(0)|答案(2)|浏览(122)

我正在创建一个Rest API,在后端使用Sping Boot ,在前端使用React js。我在React上有一个登录表单,我是否应该在登录/注册表单上启用csrf令牌。
在用户登录后,该用户将获得访问令牌,我将把它存储在内存中React和Refresh令牌中,只在http安全cookie中使用我应该在这里使用CSRF令牌吗
每当访问令牌到期时,我将使用axios拦截器发送一个请求以刷新令牌路由,之后如果刷新令牌有效,则我将获得一对新的访问和刷新令牌。
前端运行在localhost:3000上,我已经在后端配置了cors,只允许来自源localhost:3000的请求。
我应该使用CSRF令牌吗?

ilmyapht

ilmyapht1#

这是你的选择:)
Spring Security为CSRF令牌提供OOTB支持,默认情况下是启用的。我们不需要任何特定的步骤来启用此功能,但是,您可以通过Spring安全配置类中的csrf().disable()禁用此功能。
我们应该为以下用例激活Spring安全CSRF:
1.如果是普通用户触发请求。
1.以防它被浏览器处理。
我们可以禁用此功能,以防浏览器或用户以外的客户端启动并处理请求。
对于Rest API,我建议不要使用它。
但建议在使用REST API和Cookie进行身份验证时启用CSRF。如果您的REST API使用WCToken或WCTustedToken标记进行身份验证,则不需要额外的CSRF保护。
CSRF是一种恶意攻击类型,当仅使用Cookie进行身份验证时,它会诱使用户发送非预期的请求来修改数据。例如,攻击者可以诱使已通过身份验证的用户单击链接,在用户不知情的情况下更新其个人信息。在这种情况下,未受保护的HCL Commerce站点会将此请求视为有效请求,因为请求中包含正确的会话Cookie。
但是,当启用CSRF保护时,请求中需要一个名为WCAuthToken的特殊HTTP标头。如果需要该标记,则其值必须等于存储运行时设置的authToken请求属性。

a8jjtwal

a8jjtwal2#

不,我认为在REST API中不需要csrf标记,
您只需要在您的filterChain中启用httpBasic()。
而在postman中,您只需要选择BasicAuth并提供您的身份验证详细信息
别忘了在下面添加一些代码。

YOUR_ANTMATCHERS
.formLogin()
.and()
.httpBasic()
.and()
.logout(LogoutConfigurer::permitAll)
.build();

我希望,它能帮上忙!

相关问题