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

时间:2015-08-16 20:43:19

标签: spring jpa spring-data jhipster spring-rest

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

假设您有一个银行帐户,其中包含操作(餐厅+ 100 $,-50 $ ATM,...) 每个银行帐户当然都有一个所有者。

创建操作的POST REST调用的有效负载可能如下所示: {"量":100,"描述":"餐厅""的BankAccount" {" ID":1136 }}

bankaccount的id是唯一的,并且(为了这个例子)早些时候会通过另一个REST调用发送给我。

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

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

谢谢, 安迪

1 个答案:

答案 0 :(得分:0)

是的,您可以检查您的REST控制器或基础服务是否已授权操作。 Spring安全提供了d ifferent mechanisms to do it,特别是使用@PreAuthorize和@PostFilter。

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