spring securityでは以下の脆弱性がデフォルトで有効になっている
-
セッションハイジャック(Session Hijacking)対応
- Form ログインを使っている場合、 Spring Security はデフォルトでログイン時にセッションIDを変更してくれまる
- クロスサイト・スクリプティング(XSS)対応
- Thymeleafのth:xxxタグでもサニタイズしてくれます
- クロスサイト・リクエスト・フォージェリ(CSRF)対応
-
HTTP ヘッダ・インジェクション対応
- HttpServletResponse がラップされ、ヘッダーに改行コードを含んだ文字を渡したときの動作が変わる
- 改行コード(\n or \r)が含まれると、 IllegalArgumentException がスローされる
-
クリックジャッキング対応
- デフォルトで X-Frame-Options がレスポンスヘッダに設定される
- ※X-Frame-Options に deny が指定されているため
- SQL インジェクション対応については、spring securityの管轄外のため、独自で対応する必要がある
デフォルトのセキュリティヘッダー
##レスポンスヘッダーにSameSite属性を追加
- SameSite属性とは、WebサーバとWebブラウザの間でやり取りされるCookie(クッキー)に指定できる属性の一つで、サイトをまたがるアクセス時にクライアントからCookieを送信するか否かを指定するもの。
指定値は「None」「Lax」「Strict」の3種類。
SameSite属性とは
参考サイト
IPA/安全なウェブサイトの作り方
OWASPとは
Webシステム/Webアプリケーションセキュリティ要件書
CRYPTREC暗号リスト
SSL Server Test