use*_*155 7 java swagger swagger-ui spring-boot springfox
我有一个Spring boot 2应用程序(其余API),并使用Springfox Swagger 2库,包括UI库。当我打开swagger界面时,发现http://localhost:8080/swagger-ui.html所有功能都按预期运行,但是发出了两个请求,在logger中给出了404结果:
http:// localhost:8080 /(没有映射到我的应用程序的根目录)
http:// localhost:8080 / csfr(此映射也不存在,但我知道它代表“跨站点伪造的请求”)
显然Swagger这样做是因为它“支持”某种csfr令牌检查,如此处所述。现在已经进行了几个月的调查,以确定是否可以配置这些404调用,因此我现在正在考虑实现端点。我没有找到有关通常要执行的操作的信息。昂首阔步地期待什么样的标题/令牌,它将对其中的信息有什么作用?我可以使用它来使我的应用程序(或摇摇欲坠的端点)更加安全或可访问吗?简而言之:有什么意义:)?
让我一一回答您的问题。
为什么要向
http://localhost:8080/和 发送请求http://localhost:8080/csrf?
这是因为,Springfox Swagger默认情况下启用了对CSRF的支持。它的作用是,每当您尝试访问应用程序中的所有swagger端点时,它都会按以下顺序检查CSRF令牌并将其附加到请求标头。
//csrfSpringfox Swagger附加CSRF令牌的原因是,如果您的应用程序启用了CSRF保护,则在不将CSRF令牌作为标头一部分的情况下,对swagger端点的请求将失败。
昂首阔步期望什么样的标题/令牌,它将对其中的信息有什么作用?
如前所述,swagger期望使用CSRF令牌,并在尝试访问任何swagger端点时将其附加到请求的标头中。
我可以使用它来使我的应用程序(或敏捷端点)更安全或可访问吗?
在您的应用程序中启用CSRF保护将使您的应用程序免受CSRF攻击的侵害,而不必仅通过提供CSRF令牌即可大张旗鼓地附加到标头。如果您已在应用程序中启用CSRF保护,则必须通过上述3种方式中的任何一种来提供CSRF令牌,以访问应用程序中的所有swagger端点。您可以在此处阅读有关启用CSRF保护的用法。
我没有找到有关实际实施的信息
如果您未在应用程序中启用CSRF保护,则无需对swagger实现CSRF令牌规定,因为这将是多余的。但是,如果您要为swagger实现CSRF令牌提供,则可以通过以下3种方法之一进行:
1)您的中继标记中的CSRF令牌在 /
<html>
<head>
<meta name="_csrf" content="${_csrf.token}"/>
<!-- default header name is X-CSRF-TOKEN -->
<meta name="_csrf_header" content="${_csrf.headerName}"/>
</head>
Run Code Online (Sandbox Code Playgroud)
这是在您使用任何模板化机制(例如JSP,百里香叶等)的情况下。
2)端点 /csrf
定义一个端点/csrf以提供CSRF令牌。
@RequestMapping("/csrf")
public CsrfToken csrf() {
//logic to return the CSRF token
}
Run Code Online (Sandbox Code Playgroud)
3)您Cookie中的CSRF令牌
搜索的默认Cookie名称为XSRF-TOKEN,返回的默认标头名称为X-XSRF-TOKEN。春季安全性提供了一种方法,可以根据以下配置使用swagger来将CSRF令牌存储在cookie中
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
}
}
Run Code Online (Sandbox Code Playgroud)
实施以上3种方法之一将为CSRF令牌提供麻烦,以附加到请求标头。
上面的引用来自GitHub PR,它为Springfox swagger提供了CSRF支持,还提供了我之前链接的Spring安全文档。
目前关于默认开放的问题,使CSRF支持这里,和夫妇开的PR与修复#2639和#2706。
| 归档时间: |
|
| 查看次数: |
812 次 |
| 最近记录: |