【发布时间】:2019-02-14 14:56:38
【问题描述】:
我对 Spring 安全性的使用非常怀疑,特别是我想知道如何保护连接到控制器的功能(GET 和 POST)。让我更好地解释一下,为了辩护,我不打算对具有某些角色的授权用户执行该操作,我打算即使是授权用户也为该操作辩护。具体例子:知道对象标识符的用户直接从url调用POST表单,不通过任何按钮/链接
【问题讨论】:
标签: spring security post spring-security get
我对 Spring 安全性的使用非常怀疑,特别是我想知道如何保护连接到控制器的功能(GET 和 POST)。让我更好地解释一下,为了辩护,我不打算对具有某些角色的授权用户执行该操作,我打算即使是授权用户也为该操作辩护。具体例子:知道对象标识符的用户直接从url调用POST表单,不通过任何按钮/链接
【问题讨论】:
标签: spring security post spring-security get
我相信你在问:
如何防止来自其他来源的 POST 请求?
你说的是:
我要确保 POST 请求仅来自我的表单!
Spring Security 会自动为 HTML 表单执行此操作。我们称此功能
CSRF 预防
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 保护默认启用。
【讨论】:
默认情况下已经完成。 困惑解决了
【讨论】: