web security headers

IPA ISEC セキュア・プログラミング講座:Webアプリケーション編 第8章 マッシュアップ:クライアントサイドマッシュアップ: #4 対策に利用できる技術

Webサーバで指定すべきヘッダ - Qiita 2012

Nginx設定の肝 - がとらぼ

https://securityheaders.com/

CSP → https://kurita1.hatenadiary.com/entry/2022/05/26/120115

nginx security headers

Nginxセキュリティ設定 - Qiita 2016
Mac上でnginxのセキュリティ最低限を確認する - もちゅろぐ 2020

「server」節と「location」節にadd_headerを付与した場合、「location」に記載した値のみ有効になります。
【Nginx】add_headerが効かない場合 - かえでBlog 2020

REST APIなどHTTPステータスコードを上記以外で使用している場合や4xx系・5xx系で返却された場合はadd_headerが付与されなくなります。
そのため、全てのステータスコードに付与したい場合は「always」を追加します。
【Nginx】add_headerが効かない場合 - かえでBlog 2020

X-XSS-Protection

add_header X-XSS-Protection "1; mode=block";

X-Frame-Options

add_header X-Frame-Options SAMEORIGIN;

外部から<iframe>で埋め込まれることを想定していないページに関してはX-Frame-Optionsレスポンスヘッダーを適切に設定しましょう。
Webエンジニアだったら当然知っておきたい「 クリックジャッキング対策 」とは? | 株式会社ヌーラボ(Nulab inc.)

X-Content-Type-Options

add_header X-Content-Type-Options nosniff;

Strict-Transport-Security HTST

nginx

add_header Strict-Transport-Security max-age=31536000;

apache

  Header always set Strict-Transport-Security "max-age=63072000"

すべてのコンテンツがHTTPS接続で表示されるように設定され、HTTPアクセスがHTTPSにリダイレクトするよう設定されていても、最初にHTTPでアクセスした時点で攻撃者がユーザーのCookieを傍受し個人情情報を収集したり、フィッシングサイトへリダイレクトしたりする可能性があり、セキュリティ上の問題が残ります。
こうした危険を減らすことができるのがHSTSです。

HTTP Strict Transport Security(HSTS)は、ブラウザに対して常にHTTPS経由でWebサイトに接続するよう指示します。
HSTSを設定すると、URL入力時に意図的に http:// を指示しても、ブラウザはHTTPS接続を行います。
HTTPS入門 リダイレクトとHSTS:SSL/TLS サーバ証明書 |DigiCert(デジサート)正規代理店

WebサーバーでHSTSを有効にしておくと、ブラウザからの初回アクセス時にHSTSを保持していない時、サーバーはブラウザに「次からこのドメインにアクセスする時は◯◯秒間HTTPSでアクセスしてね」というレスポンスを返します。(一般的には31536000秒=1年の設定が多いです)
HSTS(HTTP Strict Transport Security)について詳細、設定方法を解説します | 株式会社レオンテクノロジー 2019

https://ssl-config.mozilla.org/ だと63072000秒=2年の設定