2017-01-05 10 views
0

私のシステムでは、ユーザは自分のパスワードを変更したいと仮定します。彼はPUTリクエストを送信し、UserRepository.save()を呼び出します。彼がリクエストにハックすると、彼は[user].admin_rights=1またはそれに類するものを設定するかもしれない。Spring JPAを使用してセキュリティリスクを回避するにはどうすればよいですか?

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

が、管理者は1日、このフィールドを更新するために必要な場合があります:

今、私はおそらく、それぞれのフィールドに@Column(updatable=false)を追加することができます!

更新する列を指定するカスタムクエリを記述する必要がありますか?または、Userエンティティ内でこの権限の問題を解決する方法はありますか?

+0

春のセキュリティをチェックしてください。特に '@ PreAuthorize'インターセプトを使用してください。 – CollinD

答えて

3

このようなアクセス許可を適用するのはアプリケーションの責任です。エンドポイントで、着信エンティティが有効であることを確認してから保存してください。この場合、「有効」とは、ユーザーが不適切に権利を昇格しようとしていないことを意味します。アプリケーションは、ユーザーから送信されたデータを盲目的に信頼すべきではありません。

関連する問題