Skip to content
Latchkey

security headerとは?サイトを堅牢にするHTTP header

security headerとは、browserに保護を強制させるHTTPレスポンスheaderであり、一般的なWeb攻撃に対してサイトを堅牢にします。

security headerは、Webアプリをより安全にするための、簡単で効果の大きい方法です。いくつかのHTTPレスポンスheaderを追加することで、混在コンテンツ、framing、信頼できないscriptのブロックといった保護をbrowserに強制させます。追加のコストはほとんどかからないのに、攻撃のクラス全体を封じるため、CIチェックでしばしば検証されます。

security headerの役割

browserがレスポンスを受け取ると、security headerはどう振る舞うべきかを指示します。どのscriptを信頼するか、ページをframeに入れてよいか、接続をHTTPSに引き上げるかどうかです。browserがこれらのルールを強制するため、保護はクライアント側で動作します。

主要なheader

  • Content-Security-Policy: どのscriptやリソースが読み込めるかを制限します。
  • Strict-Transport-Security: 今後の訪問でHTTPSを強制します。
  • X-Content-Type-OptionsとX-Frame-Options: MIME sniffingとclickjackingをブロックします。

Content Security Policy

CSPは最も強力なsecurity headerです。どのソースのscript、スタイル、その他のリソースが許可されるかを正確に宣言することで、cross-site scriptingの影響を大幅に制限します。承認されていないソースから注入されたscriptは、そもそも実行されないからです。

HSTSとトランスポート

Strict-Transport-Securityは、そのサイトに対して常にHTTPSを使うようbrowserに指示し、downgrade攻撃や偶発的な平文接続を防ぎます。一度設定されると、browserは平文のHTTP経由でそのサイトと通信することを拒否します。

CI/CDにおけるsecurity header

headerは検証が簡単なため、CIのステップでデプロイごとに存在し正しいことを表明できます。自動チェックは、CSPの脱落のようなリグレッションをユーザーに届く前に捕捉し、一度きりの設定を継続的な保証へと変えます。

低コスト、高価値

設定1行あたりの保護量で、security headerに匹敵する防御はほとんどありません。それらを正しく設定し、pipelineで検証することは、デプロイが配信するすべてのページを堅牢にする素早い成果です。

重要なポイント

  • security headerは、Web攻撃に対する保護を強制するようbrowserに指示します。
  • 主要なものには、CSP、Strict-Transport-Security、anti-framing headerがあります。
  • 追加が容易で、デプロイごとにCIで検証するのも簡単です。

関連ガイド