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/**")`