代码之家  ›  专栏  ›  技术社区  ›  Andy Verbunt

如何防止Spring JPA+Spring REST+jHipster中的恶意输入

  •  0
  • Andy Verbunt  · 技术社区  · 9 年前

    我是Spring JPA/jHipster的新手。 我的问题灵感来自朱利安·杜波依斯的jHipster演讲: https://youtu.be/R3jm2qmqctI?t=43m7s

    假设你有一个银行账户,上面有操作(餐厅+100美元,自动取款机-50美元,…) 当然,每个银行账户都有一个所有者。

    创建操作的POST REST调用的负载可能如下所示: {“amount”:100,“description”:“restaurant”,“bankaccount”:{“id”:1136}}

    银行账户的id是唯一的,(为了这个示例)可能会通过另一个REST调用发送给我。

    不幸的是,没有什么可以阻止恶意用户更改此值。人们可以简单地猜测他人拥有的银行账户的id,然后将操作添加到该账户。

    我还没有看到处理这个问题的例子。
    我是否应该明确检查银行帐户是否为用户所有? 我想,这种类型的验证可能会在您的所有实体中级联,导致大量额外的调用。 也许我错过了什么?

    谢谢 安迪

    1 回复  |  直到 9 年前
        1
  •  0
  •   Gaël Marziou    9 年前

    是的,您有责任在REST控制器或基础服务中检查操作是否被授权。弹簧安全提供d ifferent mechanisms to do it 特别是通过使用@PreAuthorize和@PostFilter。

    使用DTO也是一件好事,这样您可以更好地控制实体的哪些字段通过API进行读写。