2017-01-05 88 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

這是應用程序強制執行這樣的權限的責任。在您的端點上,您應該在嘗試保存之前驗證傳入的實體是否有效。在這種情況下,「有效」意味着用戶不會不適當地提升他們的權利。應用程序不應該盲目地信任從用戶發送的數據。