如何在SpringJPA+SpringREST+jHipster中防止恶意输入

How to prevent malicious input in Spring JPA+Spring REST+jHipster

我是 Spring JPA/jHipster 的新手。 我的问题受到 Julien Dubois 的 jHipster 演讲的启发:https://youtu.be/R3jm2qmqctI?t=43m7s

假设您有一个银行账户,上面有操作(+100$ 餐厅,-50$ ATM,...) 当然,每个银行账户都有一个所有者。

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

银行账户的 ID 是唯一的,并且(为了这个例子)早先通过另一个 REST 调用发送给我。

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

我(还)没有看到处理这个问题的例子。
我是否应该明确检查银行账户是否归用户所有? 我想这种类型的验证可能会级联通过您的所有实体,从而导致很多额外的调用。 也许我遗漏了什么?

谢谢, 安迪

是的,您有责任检查您的 REST 控制器或基础服务是否已授权操作。 Spring 安全性提供 different mechanisms to do it,特别是通过使用 @PreAuthorize 和 @PostFilter。

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

公开以供读写。