はじめに
springbootで個人開発をする中で、認証認可にspring securityを使用して
どうやら自動でCSRF対策をしてくれているとのことでどのような仕様になっているのかを調べてみたので備忘録として残しておこうと思います。
CSRFとは
クロスサイトリクエストフォージェリ(Cross-Site Request Forgery)の略。
ユーザーがログイン中であることを悪用して、ユーザーの意図しないリクエストを送る攻撃を指します。
例えばあるアプリにログイン済みでセッションIDがクッキーに保存されていた場合、別の悪意のあるページからPOSTでログイン中のアプリに不正なリクエストを送られて操作されてしまうというようなことがあるます。
thymeleafのth:action
属性
th:action属性はHTMLへレンダリングされる際に、CSRFトークンもフォームに埋め込まれて送信される仕様になっている。あとはspring securityのfilterの方でよしなに検証してくれるわけだ。
<レンダリング前>
<form th:action="@{/login}" method="post" th:object="${userForm}">
<レンダリング後>
<form action="/login" method="post"><input type="hidden" name="_csrf" value="CSRFトークン"/>
まとめ
結論フレームワークは色々自動でやってくれて便利だなと改めて実感。
↓今回参考にしたドキュメント