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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です