Strict Transport Security Header Not Set
「Strict-Transport-Security Header Not Set」というアラートは、HTTP Strict Transport Security (HSTS) ヘッダーが設定されていないことを示しています。HSTSヘッダーは、ウェブサイトがHTTPSを強制するための重要なセキュリティ機能です。このヘッダーが設定されていないと、ユーザーがHTTPを介してサイトにアクセスする可能性があり、中間者攻撃(MITM)を受けるリスクが高まります。
HSTSの設定方法
1. .htaccessファイルの編集 (Apache)
Apacheサーバーを使用している場合、.htaccessファイルに以下の行を追加してHSTSを有効にします。
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>
- max-age: HSTSポリシーが有効である期間(秒単位)。上記の例では1年間(31536000秒)。
- includeSubDomains: サブドメインにもHSTSを適用。
- preload: サイトをHSTSプリロードリストに追加するための指示。プリロードリストに追加するには、別途HSTS Preloadに登録が必要です。
2. Nginxの設定
Nginxサーバーを使用している場合、Nginxの設定ファイルに以下の行を追加します。
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
}
3. WordPressプラグインの利用
HSTSを設定するために、WordPressプラグインを利用することもできます。以下のプラグインは簡単にHSTSを設定するのに役立ちます。
-
HTTP Headers: このプラグインを使用すると、サイトのHTTPヘッダーを簡単に管理できます。HSTSヘッダーも設定できます。
// プラグインの設定画面で以下のヘッダーを追加 Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
-
Really Simple SSL: このプラグインは、サイト全体をHTTPSに変換し、HSTSヘッダーを自動的に追加するオプションも提供します。
4. カスタムコードの追加
WordPressテーマのfunctions.php
ファイルにカスタムコードを追加して、HSTSヘッダーを設定することもできます。
add_action('send_headers', 'add_hsts_header');
function add_hsts_header() {
header("Strict-Transport-Security: max-age=31536000; includeSubDomains; preload");
}
まとめ
HSTSヘッダーを設定することで、ユーザーがHTTP経由でアクセスすることを防ぎ、セキュリティを強化できます。ApacheやNginxの設定ファイルを編集するか、WordPressプラグインを利用して簡単にHSTSを有効にすることができます。これにより、OWASP ZAPで検出された「Strict-Transport-Security Header Not Set」アラートを解消し、サイトのセキュリティを向上させることができます。