【问题标题】:How do I prevent security risks using Spring JPA save?如何使用 Spring JPA save 预防安全风险?
【发布时间】:2017-05-20 15:19:14
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 检查 spring 安全性,特别是可能使用@PreAuthorize 拦截。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    相关资源
    最近更新 更多