SpringBoot-Angular 5-CSRF

Gre*_*orz 6 csrf csrf-protection spring-boot angular5

Iam现在迷路了,需要一些帮助。

我有一个

  • 带有SpringSecurtiy 4.3的SpringBoot服务器。
  • Angular 5应用

并希望启用CSRF保护,因为默认情况下都应启用CSRF保护(文档说):不是!

在SpringBoot上,我需要添加以下安全配置:

http
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
Run Code Online (Sandbox Code Playgroud)

在Angular上,我需要添加以下模块:

imports: [
    ...,
    HttpClientModule,
    HttpClientXsrfModule, //(!)
...
Run Code Online (Sandbox Code Playgroud)

服务器的底线是在每个响应中发送XRSF-TOKEN。

-但每个人都有不同。那是对的吗?我希望在客户端会话中也一样。

-这里的主要问题是Angular5仍未在其帖子调用中使用XRSF-TOKEN(例如)。它没有在请求中设置X-XSRF-TOKEN。

我在做什么错还是想念?

H.a*_*idi 1

我也遇到了同样的问题,我认为这是由于 Angular 版本 5 造成的回归。

在此问题解决之前,您可以像我一样添加自己的“X-XSRF-TOKEN”标头。

 constructor(private http: HttpClient, private tokenExtractor: HttpXsrfTokenExtractor) {
    }
Run Code Online (Sandbox Code Playgroud)

然后手动提取令牌

const token = this.tokenExtractor.getToken() as string;
Run Code Online (Sandbox Code Playgroud)

并将其添加到标题中

this.http.post<any>(url, body, {headers: new HttpHeaders().set('X-XSRF-TOKEN', token)})
Run Code Online (Sandbox Code Playgroud)

侯塞姆