登录的主管用户可以在html表中查看他的下属。
每个项目都有一个链接,主管可以详细查看选定的下属,如个人信息等...
当主管点击链接时,它将被重定向到/view/123
,其中123是所选下属的ID。控制器将处理GET请求'/view/{id}'
。
这里的问题是主管可以在/view/
之后猜出任何数字。可能的解决方案是
'/view/123?token=54gX23r'
中添加令牌以进行其他验证,例如主管将其更改为'/view/456?token=54gX23r'
ID且令牌不匹配,服务器将拒绝该请求。我认为解决方案没有。 2将解决问题但是我不确定spring是否具有与CSRF令牌类似的内置机制。
答案 0 :(得分:1)
Spring Security具有内置的CSRF令牌解决方案。要应用它,您需要在<csrf/>
Spring Security标记中附加<http>
标记,您可以在其中设置安全网址和其他内容,然后在您的jsp或其他任何形式中包含这些标记。
如果您使用的是Spring MVC
<form:form>
标签或Thymeleaf 2.1+,那么 使用@EnableWebSecurity
,CsrfToken
会自动包含在内 你
更多详情:https://docs.spring.io/spring-security/site/docs/current/reference/html/csrf.html
哦,使用Spring Security
时,默认情况下也会应用<csrf/>
标记
答案 1 :(得分:0)
唱出id会是一个解决方案(通过添加令牌/签名),但我宁愿建议检查是否允许用户查看此下属
令牌可以像:
一样创建DigestUtils.md5DigestAsHex(("123" + "MY_SECRET").getBytes())
访问资源时,您只需重新创建令牌并验证它与请求发送的令牌相同