HTTP Header
#HTTP
HTTP Security Response Headers Cheat Sheet
https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html
Owaspのチートシート
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers
Security
Strict-Transport-Security
max-age
秒単位で、そのサイトに HTTPS だけで接続することをブラウザーが記憶する時間です。
Strict-Transport-Security を無効にする必要がある場合は、 HTTPS 通信時に max-age の値を 0 に設定することで Strict-Transport-Security ヘッダーが失効し、ブラウザーからの HTTP 接続が許されるようになります。
includeSubDomains
サブドメインも適用
X-XSS-Protection
X-XSS-Protection: 1; mode=block
1; mode=block
レンダリング自体を行わない。’
XSS フィルタリングを有効化します。攻撃を検知すると、ページをサニタイジングするよりも、ページのレンダリングを停止します。
非推奨となっている
X-Frame-Options
非推奨
SAMEORIGIN
ページは、ページ自体と同じオリジンのフレーム内でのみ表示されます
X-Content-Type-Options
https://www.templarbit.com/blog/jp/2018/07/24/top-http-security-headers-and-how-to-deploy-them/
Content-Type headersで指定されたMIMEに必ず沿うように指定できます。これにより、HTTPレスポンス全体を検査(sniffing)を防ぐことができる
Content-Security-Policy
Content-Security-Policy
default-src
デフォルトのリソース読み込み元を指定
設定例
Content-Security-Policy: default-src 'self' http://example.com; connect-src 'none';
script-src
javaScriptファイルの読み込み元を指定
style-src
CSSファイルの読み込み元を指定
img-src
画像の読み込み元を指定
font-src
フォントファイルの読み込み元を指定
frame-src
フレームやiframeの読み込み元を指定
default-srcはscript-srcなどが無い場合、適用される
実際に試す
default-src self
APIのサブドメインが異なると停止した。
Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; frame-ancestors 'self';"
インラインスクリプトの実行を許可している
CSP: frame-ancestors
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors
<frame>、<iframe>、<object> 、<embed>、<applet> などを使ってページを埋め込むことのできる親を指定
frame-ancestors は、ページを埋め込むことができる親ソースを指定することができます。 これは、ページ内の iframe をどこから読み込むかを指定する frame-src とは異なります。
Feature Policy
-------------------------------------
XFF( X-Forwarded-For )とは
X-Forwarded-Forとは、HTTPヘッダフィールドの1つであり、ロードバランサなどの機器を経由して
Webサーバに接続するクライアントの送信元IPアドレスを特定する際のデファクトスタンダードです。
クライアントの送信元IPアドレスの特定は、ロードバランサなどでクライアントの送信元IPアドレスが
変換された場合でも、HTTPヘッダに元のクライアントIPアドレスの情報を付加することで実現します。
https://developer.mozilla.org/ja/docs/Web/HTTP/CORS
Cookie ヘッダーを含んでいる場合、 Access-Control-Allow-Origin ヘッダーが "*" であったらリクエストは失敗