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

avatar

 2019.01.22  Japanブログ編集部

もしあなたがWordPressのサイトを所有しているなら、Webサイトのセキュリティに注意すべきです。ブログやビジネス、オンラインストアの運営に成功するには、あなたのWebサイトが絶対に安全であることを確認する必要があります。

顧客はあなたのWebサイトを訪れ、商品を購入し、パスワード、クレジットカード情報などの機密情報を入力します。もし、あなたのWebサイトに外部から侵入可能な穴がある場合には、あなたの顧客のデータがハッカーに盗まれるかもしれません。

あなたのWordPressサイトのセキュリティを強化するためにあなたができることはたくさんあります。

しかし、Webサイトのセキュリティ向上のために最適なのは、WordPressサイトにHTTPセキュリティヘッダーを追加することです。それにより、最高のセキュリティプラクティスを取り入れて、最新のセキュリティ体勢を確保できます。

HTTPセキュリティヘッダーは、攻撃や脆弱性の軽減に役立ち、セキュリティの層を追加します。

この記事では、HTTPレスポンスヘッダーとは何かを説明し、WordPressにHTTPセキュリティヘッダーを追加する方法について紹介します。

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

ユーザーがWebブラウザーを使用してWebサイトを閲覧するとき、サーバーはHTTPレスポンスヘッダーに反応します。これらのヘッダーは、Webサイトとの通信中にどのように振る舞うかをWebブラウザーに通知するものです。通常これらのヘッダーは、キャッシュコントロール、ステータスエラーコード、コンテンツエンコーディングなどのメタデータで構成されています。

HTTPレスポンスヘッダーを使用すると、Webサイトのセキュリティを強化し、攻撃を防止あるいは軽減することができます。

たとえば、strict-transport-securityを追加すると、Google Chrome、Firefox、Safariなどの最新のWebブラウザーすべてがHTTPS経由でのみWebサイトと通信するようにできます。

以下に、6つのHTTPセキュリティヘッダーを紹介します。

  • HTTP Strict Transport Security(HSTS)

  • X-Frame-Options

  • X-XSS-Protection

  • X-Content-Type-Options

  • Referrer-Policy

  • Feature-Policy

◆ HTTP STRICT TRANSPORT SECURITY(HSTS)

たとえば、example.comというサイトを運営しているあなたが、HTTPからHTTPSに移行するためにSSL/TLS証明書を設定したとします。

すると、あなたのWebサイトにはHTTPS経由でしかアクセスできなくなるはずです。

しかし、そのサイトにはまだHTTP経由でアクセスできると言われたらどうでしょうか?まさかと思うでしょうか?ハッカーがHTTPでWebサイトを開くために使用できるスクリプトはいくつか存在します。

strict-transport-securityを使用すれば、Google Chrome、Firefox、Safariなどの最新のWebブラウザーすべてがHTTPS経由でのみWebサイトと通信するようにできます。攻撃者があなたのWordPressサイトをHTTP経由で開こうとしても、Webブラウザーでページをロードすることができなくなります。

◆ X-XSS-PROTECTION

X-XSS(X-クロスサイトスクリプティング)は、サイトをクロスサイトスクリプティングから保護するためのセキュリティヘッダーです。

このセキュリティヘッダーはデフォルトで組み込み済みで、昨今のWebブラウザーで有効化されています。設定すると、ブラウザーがこれをロードします。クロスサイトスクリプティング攻撃が検出された場合、このセキュリティヘッダーがページをロードさせないようにします。

◆ X-CONTENT-TYPE-OPTIONS

セキュリティヘッダー「X-Content-Type-Options: nosniff」を指定すると、Google Chrome、Internet Explorer、Firefoxに指定したコンテンツタイプを使うよう指示して、MIMEタイプのスニッフィングを防止できます。

このセキュリティヘッダーはコンテンツを保護し、ドライブバイダウンロードのリスクを低減します。

◆ X-FRAME OPTIONS

x-frame-optionsヘッダーは、iframeのページをWebサイト上に配置できないようにすることで、クリックジャッキングからサイトを保護します。このヘッダーは、IE 8+、Chrome 4.1+、Firefox 3.6.9+、Opera 10.5+、Safari 4+でサポートされます。

この攻撃では、そこには存在しない何かをユーザーにクリックさせます。ユーザーは、自分がメインサイトを見ていると思っていても、何か別のものがバックグラウンドで実行されています。この方法で、ハッカーはあなたのWebブラウザーから情報を盗むことができます。

◆ REFERRER-POLICY

ユーザーがWebサイトを閲覧すると、すぐに「Referrer」ヘッダーが含められ、サーバーに遷移元を通知します。このヘッダーは分析の目的で使用されます。

お気づきのように、この機能は個人情報に関する問題をもたらします。この問題は、WordPressサイトにReferrer-Policyを追加することで回避できます。

◆ FEATURE-POLICY

Feature-Policyは、Webサイトの所有者が、自分のページや埋め込んだページ上の特定のWebプラットフォーム機能を、許可または禁止することを可能にするセキュリティヘッダーです。

Feature-Policyヘッダーを使用すると、サイトの所有者はサイト上のWebブラウザーの機能を制限できます。

各機能について、許可するもの、禁止するものを指定する必要があります。Feature-Policyで指定できる機能はつぎのとおりです。

  • geolocation

  • midi

  • notifications

  • push

  • sync-xhr

  • microphone

  • camera

  • magnetometer

  • gyroscope

  • speaker

  • vibrate

  • fullscreen

  • payment

たとえば、あなたのWordPressサイトでgeolocationcameraを無効にしたい場合は、次のようにFeature-Policyを定義する必要があります。

Feature-Policy: geolocation ‘none’ ; camera ‘none’

オリジンのリストに‘none’の文字を指定すると、ブラウザーのすべてのコンテキストでその特定の機能が無効化されます。

注:

  • WordPressサイトにHTTPセキュリティヘッダーを追加する前に、SSL証明書がインストールされているか確認してください。インストールされていない場合、あなたのサイトにアクセスできなくなります。

  • ファイルの編集を行う前には、必ずフルバックアップを取るようにしてください。

WordPressにHTTPレスポンスヘッダーを追加する方法

WordPressにHTTPレスポンスヘッダーを追加するには、.htaccessファイルに以下の行を追加します。

まず、WordPressをホストするcPanelのアカウントにログインし、そこからあなたのWordPressサイトのルートフォルダに移動します。次に、.htaccessファイルを探して、それを編集します。

このファイルは (.) ファイルなので表示されない場合があります。rootフォルダー内に.htaccessファイルが見つからない場合、設定画面で[show hidden files]をクリックしてください。

ファイルの末尾に、以下の行を追加します。

Header set Strict-Transport-Security "max-age=31536000" env=HTTPS

Header set X-XSS-Protection "1; mode=block"

Header set X-Content-Type-Options nosniff

Header always append X-Frame-Options SAMEORIGIN

Header Referrer-Policy: no-referrer-when-downgrade

追加したらファイルを保存します。

最後に、securityheaders.comにアクセスして、コードが適切に動作していることを確認してください。

security-report-summary

注:上記の設定では、Feature PolicyとContent Security Policyを追加していません。それらの設定はかなり難しく、サイトを壊してしまう可能性があるからです。しかし、WordPressのセキュリティを強化するにはこれで十分です。

以上になります。このチュートリアルを読んで、皆様がHTTPセキュリティヘッダーに関する基礎的な知識を得て、WordPressサイトに実装する方法を理解できたなら幸いです。この記事について何かご質問がありましたら、コメント欄でお知らせください。

執筆者について:Jyoti Ray氏は、WPMyWeb.comの設立者です。彼は、ブログ、WordPressのチュートリアル、ホスティング、アフィリエイトマーケティングなどについての記事を執筆しています。オフのときには、ブログを書いたり、読書したり、料理をしたりしています。Twitterでも彼をフォローできます。

編集者注:ゲスト執筆者による本記事の意見は、筆者自身の意見であり、必ずしもTripwire Inc.の意見を反映するものではありません。

SANS:基本への回帰

RECOMMEND関連記事


この記事が気に入ったらいいねしよう!