如何使用Spring JPA保存防止安全风险?

时间:2017-01-05 22:31:24

标签: spring spring-security spring-data spring-data-jpa

假设在我的系统中用户想要更改密码。他发送PUT请求,然后调用UserRepository.save()。如果他遇到请求,他可能会设置[user].admin_rights=1或类似。

现在我可以将@Column( updatable=false )添加到相应的字段中:

@Entity public class User {
    @Column(updatable=false) private Boolean admin_rights;
    // ....

,但管理员可能需要在某一天更新此字段!

我是否需要为此编写自定义查询,指定要更新的列?或者有没有办法在User实体中解决此权限问题?

1 个答案:

答案 0 :(得分:3)

应用程序有责任强制执行此类权限。在端点上,您应该在尝试保存之前验证传入实体是否有效。在这种情况下,“有效”意味着用户不会试图不恰当地提升他们的权利。应用程序绝不应盲目信任用户发送的数据。