WordPressでのHTTPセキュリティヘッダーの設定

公開: 2022-02-23

最新のブラウザのほとんどは、WordPress Webサイトのセキュリティを向上させ、クリックジャッキング、クロスサイトスクリプティング、その他の一般的な攻撃などのブラウザ攻撃から訪問者を保護し、サイトの訪問者のプライバシーを向上させるために、さまざまなHTTPセキュリティヘッダーをサポートしています。オンライン。

この記事では、これらのHTTPセキュリティヘッダーとは何かの概要を説明し、それらがどのように機能し、どのような範囲であるかを説明します。 また、これらのHTTPセキュリティヘッダーをWebサイトに追加して、WordPressWebサイトのセキュリティを向上させる方法についても説明します。

とにかくHTTPセキュリティヘッダーとは何ですか?

HTTPセキュリティヘッダーは一連のHTTPヘッダーです1 Webクライアント(ブラウザ)とWebサーバーの間で交換され、Webクライアントとサーバー間のHTTP通信のセキュリティ関連の設定を指定するために使用されます。 WordPress Webサイトでセキュリティヘッダーを有効にすると、クロスサイトスクリプティング(XSS)やクリックジャッキングなどの一般的な攻撃に対するWebサイトの回復力を向上させることができます。

HTTPセキュリティヘッダーがWordPressのセキュリティをどのように改善できるか

HTTPセキュリティヘッダーは、ブラウザにさまざまなセキュリティ機能を有効にするように指示することで、WordPressWebサイトのセキュリティを向上させるのに役立ちます。 多くの場合、適切なヘッダーを実装するのは難しい作業であり、古いブラウザーでは結果が異なる(またはまったく効果がない)可能性があるため、変更を適用する前に、テスト環境またはステージング環境で変更を試すことをお勧めします。ライブのWordPressサイト。

最も一般的に使用されるHTTPセキュリティヘッダー

どのヘッダーが何をしますか? 最も重要で一般的に使用されるHTTPセキュリティヘッダーの概要を詳しく見ていきましょう。

Strict-Transport-Security

Strict-Transport-Security HTTPヘッダーは、HTTP Strict Transport Security(HSTS) 2を適用するようにブラウザーに指示します。 。 HSTSヘッダーは、ユーザー(またはMan-in-the-Middle攻撃を実行しようとしている攻撃者)がHTTP経由でサイトにアクセスしようとしても、(HTTPではなく)常にHTTPS経由でサイトにアクセスするように訪問元のブラウザーに指示します。 HTTPが利用できない場合でも、ブラウザは強制的にHTTPSに切り替えます。そのような範囲で、HTTPSが有効になっていて、コンテンツが混在する問題がなく完全に正しく機能している場合にのみ、HSTSを有効にする必要があります3

次のHTTPStrictTransport Security(HSTS)HTTP応答ヘッダーは、1年間(31536000秒)のHSTSを有効にします。


Strict-Transport-Security: max-age=31536000

コンテンツ-セキュリティ-ポリシー

Content-Security-Policy HTTPセキュリティヘッダーは、多くの機能と構成可能性を備えたHTTPヘッダーです。 クロスサイトスクリプティング(XSS)やデータインジェクション攻撃などの攻撃を検出して軽減するのに役立つ追加のセキュリティレイヤーを提供する、最新のブラウザーに見られる一連のセキュリティ機能であるブラウザーのコンテンツセキュリティポリシー(CSP)を構成します。

コンテンツセキュリティポリシー(CSP)は、問題のWebサイトに応じて適切なCSP設定が非常に広く異なり、展開前に十分にテストする必要があるため、正しく理解するのが難しいことでも有名です。そのため、姉妹のContent-Security-Policyがあります。 -レポート-4のみCSPのテストにのみ使用されるHTTPヘッダー。

以下は、Webサイトが提供されているオリジンからのアセットのロードのみを許可する非常に単純なコンテンツセキュリティポリシー(CSP)ポリシーの例です。


Content-Security-Policy: default-src 'self'

ただし、コンテンツセキュリティポリシー(CSP)は、この単純な例に示されているよりもはるかに構成可能です。 CSPには、 script-srcstyle-srcimg-srcなどの他のディレクティブが含まれており、ブラウザーがアセット(CSS、画像、フォントなど)をロードできるソースを指定します。 CSPの構成方法の完全なリストについては、コンテンツセキュリティポリシーのクイックリファレンスガイドラインを参照してください。

X-Content-Type-Options

X-Content-Type-Options HTTPセキュリティヘッダーは、すべての主要なブラウザーで尊重される非標準のヘッダーであり、MIMEタイプスニッフィングの結果として発生するクロスサイトスクリプティング(XSS)攻撃を防ぎます5 。 存在する場合、このヘッダーは、Content-Type HTTPヘッダーで定義されたMIMEタイプに厳密に従うようにブラウザーに指示し、ブラウザーは応答データ自体の正しいMIMEタイプを検出しようとしないように指示します。 ヘッダーには、nosniffという単一のディレクティブがあります。


X-Content-Type-Options: nosniff

古いまたは未使用のHTTPセキュリティヘッダー

古くて未使用のHTTPセキュリティヘッダーも多数あります。 それらは、一時的な修正、実験、または非推奨または完全に置き換えられた非標準のイニシアチブとして導入されたため、使用されなくなったか、機能しなくなりました。 以下は、これらのHTTPセキュリティヘッダーのリストです。

HTTPセキュリティヘッダーがContent-Security-Policyに置き換えられました

Xフレーム-オプション

X-Frame-Options HTTPセキュリティヘッダーは、クロスサイトスクリプティング(XSS)、クリックジャッキング、およびiframe内に配置されているWebサイトに依存する他の攻撃。

このヘッダーは、frame-ancestorsコンテンツセキュリティポリシー(CSP)ディレクティブに置き換えられました。 X-Frame-Optionsの代わりにframe-ancestorsディレクティブを指定してCSPを使用することをお勧めします。

X-XSS-保護

X-XSS-Protection HTTPセキュリティヘッダーは、クロスサイトスクリプティング(XSS)攻撃に対するブラウザー保護を有効または無効にするために導入された非標準のヘッダーでした。 実際には、このヘッダーは攻撃者が迂回するのが簡単であることが多く、その結果、ほとんどの最新のブラウザでは無視されます。

公開鍵ピン

TLS証明書のなりすましを防ぐためにGoogleChromeおよびFirefoxで導入された公開鍵ピンニング(HPKP)セキュリティ機能を構成するために使用されるPublic-Key-PinsHTTPセキュリティヘッダー。 HPKPは、Webサーバーに、Webサイトが使用するTLS証明書公開鍵の暗号化ハッシュのセットをブラウザーに提供させることで機能しました。ブラウザーはこれを使用して、後続の要求でサーバーから受信する証明書と比較します。 問題は、HPKPの管理がかなり複雑であり、Webサイトへのアクセスを完全に無効にする可能性のある設定ミスが頻繁に発生することでした。そのため、HPKPの使用は推奨されなくなりました。

WordPressにHTTPセキュリティヘッダーを追加する

HTTPセキュリティヘッダーは、Webサーバー、または該当する場合はコンテンツ配信ネットワーク(CDN)またはWebアプリケーションファイアウォールで構成されている場合に最適に機能します。 これにより、リクエストごとに送信できます。 または、あまり理想的ではありませんが、WordPressプラグインを使用してこれらのヘッダーを設定することもできます。

HTTPセキュリティヘッダーの目的について説明したので、WordPressWebサイトでヘッダーを有効にする方法をいくつか紹介します。

ApacheHTTPサーバーを使用してWordPressにHTTPセキュリティヘッダーを追加する

以下は、HTTP Strict Transport Security(HSTS)、X-Content-Type-Options、および単純なコンテンツセキュリティポリシーを有効にするために必要なApacheHTTPサーバーの構成の例です。


<ifModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000"
Header set X-Content-Type-Options "nosniff"
Header set Content-Security-Policy "default-src 'self'"
</ifModule>

Nginxを使用してWordPressにHTTPセキュリティヘッダーを追加する

同様に、以下は、HTTP Strict Transport Security(HSTS)、X-Content-Type-Options、および単純なコンテンツセキュリティポリシーを有効にするために必要なNginxの構成の例です。


server {
add_header Strict-Transport-Security "max-age=31536000; always;
add_header X-Content-Type-Options "nosniff" always;
add_header Content-Security-Policy "default-src 'self'" always;
}

プラグインを使用してWordPressにHTTPセキュリティヘッダーを追加する

または、効果は劣りますが(WordPress自体に依存してヘッダーを変更するため)、WordPressプラグインを使用するのがWordPressWebサイトにHTTPセキュリティヘッダーを追加する最も簡単な方法である可能性があります。 リダイレクトプラグインなどのプラグインを使用すると、カスタムHTTPヘッダーをWebサイトに追加できます。

WebサイトのHTTPセキュリティヘッダーを確認する方法

WordPress WebサイトにHTTPセキュリティヘッダーを追加したら、それらが正しく構成され、期待どおりに機能していることを確認する必要があります。 これをテストする最も簡単な方法は、セキュリティヘッダー6と呼ばれる無料のツールを使用することです。

セキュリティヘッダーツールの使用は、WebサイトのURLを入力して[スキャン]をクリックするだけです。 次に、A +からFまでの成績と、その成績がどのように決定されたかの説明が与えられます。

この記事で使用されている参照[ + ]

この記事で使用されている参照
1 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
2 https://owasp.org/www-project-secure-headers/#http-strict-transport-security
3 https://web.dev/what-is-mixed-content/
4 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
5 https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#mime_sniffing
6 https://securityheaders.com/