登录的主管用户可以在 html 表中查看其下属。
每个项目都有一个链接,主管可以查看所选下属的详细信息,例如个人信息等...
当主管单击该链接时,它将被重定向到 /view/123
,其中 123 是所选下属的 ID。 Controller 将处理 GET 请求'/view/{id}'
。
这里的问题是主管可以猜测 /view/
之后的任何数字。可能的解决方案是
- 将其更改为 POST,这样更安全,但客户端仍然可以创建一个仍然不安全的虚拟 post 请求。
- 在网址中添加 token
'/view/123?token=54gX23r'
以进行额外验证,例如主管将其更改为'/view/456?token=54gX23r'
id 和 token 不匹配,请求将被服务器拒绝。
我认为解决方案没有。 2 将解决这个问题,但是我不确定 spring 是否有一个类似于 CSRF token 的内置机制。
最佳答案
Spring Security 具有内置的 CSRF token 解决方案。要应用它,您需要附加<csrf/>
<http>
内的标签Spring Security 标记,您可以在其中设置安全 url 和其他内容,然后在您的 jsp 或任何形式中包含这些标记。
If you are using Spring MVC
<form:form>
tag or Thymeleaf 2.1+ and are using@EnableWebSecurity
, theCsrfToken
is automatically included for you
更多详细信息:https://docs.spring.io/spring-security/site/docs/current/reference/html/csrf.html
哦,<csrf/>
使用 Spring Security 时,默认情况下也会应用标签
关于java - Spring security 阻止用户操纵 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35340093/