Spring 安全和 spring 数据:安全访问不属于当前用户的数据
Spring security and spring data : secure access to data that doesn't belong to the current user
我正在使用 mongodb 构建一个 angular/springboot 全栈项目。但是我有一个关于访问不属于当前用户的数据的安全问题。例如,如果我有一个 url /mydata/123,那么当前用户可以在 url 中使用随机 ID,例如 /mydata/7865 并访问不属于他的数据。
这里是一个数据模型示例:
mydatamodel {
id
criticaldata
}
请问如何避免这种用例以及最佳做法是什么。
谢谢
用户可以通过 SPEL 中的主体访问当前登录的用户,并且您还可以访问 userId,因为它是请求参数。然后你 运行 你在 bean 中的规则。
@PreAuthorize("@userIdAccessCheckService.hasAccessTo(principal , #userId)")
@GetMapping("/user/{userId}")
public void yourRestControllerMethod(@RequestParam("userId") String userId){
}
@Service
public class UserIdAccessCheckService{
// In this method, you can run your rule and check
// if the logged in person have access to userid
public boolean hasAccessTo(User principal , String userId){
....
}
}
备注
如果您允许控制器方法但希望 show/hide 该页面上的某些部分基于类似规则,则它有一些缺点。因为这不是问题,所以很好
我正在使用 mongodb 构建一个 angular/springboot 全栈项目。但是我有一个关于访问不属于当前用户的数据的安全问题。例如,如果我有一个 url /mydata/123,那么当前用户可以在 url 中使用随机 ID,例如 /mydata/7865 并访问不属于他的数据。
这里是一个数据模型示例:
mydatamodel {
id
criticaldata
}
请问如何避免这种用例以及最佳做法是什么。 谢谢
用户可以通过 SPEL 中的主体访问当前登录的用户,并且您还可以访问 userId,因为它是请求参数。然后你 运行 你在 bean 中的规则。
@PreAuthorize("@userIdAccessCheckService.hasAccessTo(principal , #userId)")
@GetMapping("/user/{userId}")
public void yourRestControllerMethod(@RequestParam("userId") String userId){
}
@Service
public class UserIdAccessCheckService{
// In this method, you can run your rule and check
// if the logged in person have access to userid
public boolean hasAccessTo(User principal , String userId){
....
}
}
备注
如果您允许控制器方法但希望 show/hide 该页面上的某些部分基于类似规则,则它有一些缺点。因为这不是问题,所以很好