2017-01-05 134 views
0

假设,在我的系统中,用户想要更改他的密码。他发送PUT请求,然后请求UserRepository.save()。如果他侵入请求,他可能会设置[user].admin_rights=1或类似的。如何使用Spring JPA保存防止安全风险?

现在,我大概可以添加@Column(updatable=false)到各个领域:

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

,但管理员可能需要更新此字段中的一个一天!

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

+0

检查弹簧安全性,特别是可能使用'@ PreAuthorize'截取。 – CollinD

回答

3

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