【问题标题】:Perplexities in spring security method POST and GETSpring 安全方法 POST 和 GET 中的困惑
【发布时间】:2019-02-14 14:56:38
【问题描述】:

我对 Spring 安全性的使用非常怀疑,特别是我想知道如何保护连接到控制器的功能(GET 和 POST)。让我更好地解释一下,为了辩护,我不打算对具有某些角色的授权用户执行该操作,我打算即使是授权用户也为该操作辩护。具体例子:知道对象标识符的用户直接从url调用POST表单,不通过任何按钮/链接

【问题讨论】:

    标签: spring security post spring-security get


    【解决方案1】:

    我相信你在问:

    如何防止来自其他来源的 POST 请求?

    你说的是:

    我要确保 POST 请求仅来自我的表单!

    Spring Security 会自动为 HTML 表单执行此操作。我们称此功能

    CSRF 预防

    • C罗斯
    • S网站
    • R请求
    • F狂暴

    Spring Security 会自动为您执行此操作。验证任何 POST 请求以确保它具有 CSRF 令牌。 Spring 在浏览器加载表单时设置的值。没有这个令牌,Spring Security returns a 403 error (link)

    例如:

            http
                //application security
                .mvcMatcher("/**")
                .authorizeRequests()
                    .anyRequest().hasAnyRole("ADMIN","USER")
                    .and()
                .httpBasic()
                    .and()
                .formLogin()
            ;
    

    已启用 CSRF 保护。要禁用它,我们添加.csrf().disable()

            http
                //application security
                .mvcMatcher("/**")
                .authorizeRequests()
                    .anyRequest().hasAnyRole("ADMIN","USER")
                    .and()
                .httpBasic()
                    .and()
                .formLogin()
                    .and()
                .csrf().disable()
            ;
    

    您可以看到this user (link) 在没有 CSRF 令牌的情况下无法提交 POST。该用户的解决方案是禁用 CSRF 保护,因为它默认启用。

    您的问题的答案是:您不必做任何事情。 CSRF 保护默认启用。

    【讨论】:

      【解决方案2】:

      默认情况下已经完成。 困惑解决了

      【讨论】:

        猜你喜欢
        • 2011-12-02
        • 1970-01-01
        • 2010-12-28
        • 2013-08-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-30
        相关资源
        最近更新 更多