Open4
開発でよく使うHTTP Headerをまとめておく
HTTPのヘッダーってそもそも何か。よく使うものをふわっとしか理解していないので、概要と各種設定できる内容の理解を深めたい。
よく使うリクエストヘッダーはここにまとめる
よく使うレスポンスヘッダーはここにまとめる
セキュア系、CORS系のヘッダーはここにまとめる
Strict-Transport-Security (HSTS)
■- 内容
- ブラウザに対して、指定された期間中はHTTPSのみで接続するよう指示する
- 注意点
- 初回接続時はHSTSの設定をブラウザ側は保持していないのでHTTPの場合、HTTPでの通信が発生する。1度レスポンスでHSTSの設定が返るとブラウザはmax-age間、HTTPSでの接続を試みるようになる。つまり、301リダイレクトよりはHTTPでの接続回数をぐんと減らせるが0ではないことに注意が必要。0にするにはpreloadの設定をしておこう
- 設定
- max-age
- 秒単位で、そのサイトに HTTPS だけで接続することをブラウザーが記憶する時間
- includeSubDomains
- 省略可能で、この引数が指定されると、この規則がサイトのすべてのサブドメインにも適用される
- preload
- 初回アクセス時点でHTTPSで接続するように指示するようにする。GoogleのHSTS Preloadに登録しておく必要あり
- max-age
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
Content-Security-Policy (CSP)
■- 内容
- クロスサイトスクリプティング(XSS)やデータインジェクション攻撃を防ぐために、ブラウザが読み込むコンテンツに制限をかける
- 設定
- default-src
- defaultは「self」で自身のオリジンからのコンテンツのみを許可する
- その他色々あるので制限をかけたい対象毎に調べて適応する
- script-src
- object-src
- style-src
- img-src
- form-action
- etc...
- default-src
X-Content-Type-Options
■- 内容
- ブラウザに対して宣言されたMIMEタイプ以外でのコンテンツの解釈を禁止する指示する
- ブラウザがMIMEタイプのスニッフィング(推測)をし、想定していないファイルの読み込みや実行を行う場合がある。MIMEタイプに指定したもののみを厳密に利用するように指示することで推測を行わせないのが目的
- 設定
- nosniff
- ブラウザは Content-Type ヘッダーに指定されたMIMEタイプに厳密に従う
- nosniff
X-Content-Type-Options: nosniff
X-Frame-Options
■- 内容
- ブラウザーがページを <frame>、<iframe>、<embed>、<object> の中に表示することを許可するかどうかを設定できる
- 設定
- DENY
- ページをフレーム内に表示することは、それを試みているサイトが何であろうとできません。
- SAMEORIGIN
- ページは、ページ自体と同じオリジンのフレーム内でのみ表示される
- DENY