Persistent Entitieを@RequestMappingメソッドの引数に使用してはいけない

Spring MVC等のフレームワークを使用するとHttpリクエストから自動的にJavaオブジェクトに変換してくれる。

@PutMapping
public String onSubmitByPutMethod(@Valid UserDetailsForm userDetailsForm, BindingResult result) throws IOException {

便利な機能だが下記の通りセキュリティリスクもあるので注意する。

例えばユーザー情報管理画面のリクエストをEntityクラスに設定するようにした場合、Httpリクエストを細工すると元の画面には無い項目をオブジェクトに設定出来てしまう。
そのままそのオブジェクトを永続化すれば、不正にパスワードや権限を変更出来てしまう。

参考:https://rules.sonarsource.com/java/tag/spring/RSPEC-4684