Java HttpSecurity permitAll和WebSecurity忽略unauth URL';s
此问题可能看起来重复,但以下答案均未解释何时使用:Java HttpSecurity permitAll和WebSecurity忽略unauth URL';s,java,spring,spring-boot,spring-mvc,spring-security,Java,Spring,Spring Boot,Spring Mvc,Spring Security,此问题可能看起来重复,但以下答案均未解释何时使用: `http .authorizeRequests() .antMatchers("/h2-console/**", "/user/register/**").permitAll()` 及 通过阅读StackOverflow asnwers和几篇文章,我了解到: 配置(HttpSecurity)允许在资源级别配置基于web的安全性 配置(Web安全)用于影响全局安全的配置设置。使用这个U
`http
.authorizeRequests()
.antMatchers("/h2-console/**", "/user/register/**").permitAll()`
及
通过阅读StackOverflow asnwers和几篇文章,我了解到:
配置(HttpSecurity)允许在资源级别配置基于web的安全性
配置(Web安全)用于影响全局安全的配置设置。使用这个URL,Spring安全过滤器链将完全忽略URL
当我使用permitAll()
时,只有禁用了csrf:http.csrf()
但是对于web.ignering()
URL,则完全忽略
仍然有很多文章使用http.permitAll()
来表示/login
或/register
等
所以我想理解
为什么我们甚至应该对像/login
和/register
这样的未授权URL使用http.permitAll()
为什么我们不能为/login
和/register
使用web.ignoring()
为什么web.ignering()
通常只用于提供静态内容,如css
和webjars
等,而不用于/login
和/register
?正如@M.Deinum
所指出的,我正在总结答案,我已经更新了同样的文档
配置(web安全web)
此方法中使用的端点忽略spring安全筛选器,
标题、CSRF等。请参阅标题配置器、CSRF配置器。相反,如果
您希望保护公共端点免受常见漏洞的攻击,
然后参见配置(HttpSecurity)
和
HttpSecurity#授权请求
配置方法
配置(HttpSecurity http)
需要防御常见漏洞的公共终结点
可以在此处指定。请参阅HttpSecurity#authorized requests
和
permitAll()
授权规则了解更多详细信息
当您permitAll
时,您基本上会说,无论做什么,我都希望每个人都能够访问此URL,但是所有其他安全功能(安全标头、csrf保护等)仍然适用。通过忽略
,所有这些功能也将被忽略,并打开应用程序以查找可能的漏洞。感谢您的回复。我想了解这些漏洞。我的意思是,如果我想让URL
未经身份验证,那么还有哪些安全漏洞?这将帮助我理解并决定在未来的场景中哪些URL
应该是web.ignored()
,哪些应该是http.permitAll()
。跨站点脚本、XSS攻击、内容嗅探等等。Spring Security提供了一些功能来防止这些攻击(并通过发送额外的标题在浏览器中启用它们)。Spring Security所做的不仅仅是“仅仅”身份验证和授权。忽略它们还意味着没有设置安全上下文等。
`web
.ignoring()
.antMatchers("/h2-console/**", "/user/register/**")`