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で検証するのも簡単です。