Webサイトの安全性を高める方法はいくつかありますが、そのひとつがセキュリティヘッダの設定です。これは、ブラウザに対して「このページはこう扱ってください」と伝えるための追加情報です。
.htaccessを使えば、Apache系サーバーで基本的なセキュリティヘッダを追加できる場合があります。このページでは、初心者向けに代表的なヘッダの意味と設定例を分かりやすく紹介します。
この記事で分かること
セキュリティヘッダとは、Webサーバーがブラウザへ返すレスポンスヘッダの一種で、ページの扱い方や読み込み方に関する安全対策を補助するものです。
たとえば、他サイトの枠内に勝手に表示されにくくしたり、ファイル種類の誤判定を防いだり、参照元情報の送り方を制御したりできます。
ポイント
セキュリティヘッダは、サイトの見た目を変える設定ではありません。主にブラウザの動作ルールを補強するための設定です。
Apache系サーバーでは、一般的に mod_headers を使ってセキュリティヘッダを追加します。基本例は次のようになります。
<IfModule mod_headers.c> Header always set X-Frame-Options "SAMEORIGIN" Header always set X-Content-Type-Options "nosniff" Header always set Referrer-Policy "strict-origin-when-cross-origin" </IfModule>
まずはこの3つから始めると、比較的分かりやすく安全に導入しやすいです。
| ヘッダ名 | 主な役割 | 概要 |
|---|---|---|
| X-Frame-Options | 他サイトの枠内表示を制御 | クリックジャッキング対策として使われます。 |
| X-Content-Type-Options | ファイル種類の誤判定を防ぐ | ブラウザが勝手に別の形式と解釈しにくくします。 |
| Referrer-Policy | 参照元情報の送り方を制御 | 外部サイトへ送られる情報を抑えやすくします。 |
X-Frame-Options は、自分のページが他サイトの iframe などに埋め込まれるのを制御するためのヘッダです。
Header always set X-Frame-Options "SAMEORIGIN"
SAMEORIGIN は、同じサイト内からの表示だけを許可する考え方です。一般的なWebサイトでは使いやすい設定です。
自サイト内でiframe表示を使っているページがある場合は、その動作に影響しないか確認してください。
X-Content-Type-Options は、ブラウザがファイルの種類を勝手に推測しにくくするための設定です。
Header always set X-Content-Type-Options "nosniff"
これにより、サーバーが返した種類に沿って扱わせやすくなり、意図しない解釈を防ぐ助けになります。
Referrer-Policy は、リンク先へ参照元情報をどこまで送るかを制御するための設定です。
Header always set Referrer-Policy "strict-origin-when-cross-origin"
この値は、同一サイト内では比較的使いやすく、外部サイトへは必要以上の情報を送りにくくするバランス型の設定としてよく使われます。
セキュリティヘッダには他にもいろいろありますが、最初から増やしすぎると、何が影響したのか分かりにくくなります。
初心者向けの運用では、まずは次の3つから始めるほうが安全です。
最初から多くのヘッダを一度に追加すると、外部サービスや埋め込み機能に影響が出たときに原因を切り分けにくくなります。
セキュリティヘッダの中でも、Content-Security-Policy は非常に強力ですが、そのぶん設定も複雑です。外部のJavaScript、CSS、画像、埋め込みコンテンツなどに細かく影響します。
設定が不完全だと、サイトの表示崩れや機能停止につながることがあります。そのため、初心者向けの基本記事では、まず別枠で慎重に扱うテーマとして考えるのが無難です。
まずは基本の3項目を導入し、Content-Security-Policy は必要性と影響範囲を確認してから別途検討する流れがおすすめです。
通常は、サイトの公開ディレクトリにある .htaccess に記述します。上位ディレクトリに書いた場合、その配下にも適用されることがあります。
サイト全体に共通で適用したいなら上位へ、特定の領域だけで試したいなら対象ディレクトリで設定すると管理しやすいです。
設定後は、ブラウザの開発者ツールや確認サービスなどで、レスポンスヘッダに指定した項目が含まれているか確認します。
見た目だけでは分かりにくい設定なので、通信内容の確認も大切です。
サーバー環境によっては、.htaccessで Header ディレクティブを使えない場合があります。その場合は設定しても反映されないことがあります。
.htaccessでセキュリティヘッダを設定すると、ブラウザの動作ルールを補強し、クリックジャッキング対策や情報の送り方の制御などに役立てることができます。
まずは X-Frame-Options、X-Content-Type-Options、Referrer-Policy の3つから始めて、動作確認をしながら必要に応じて見直していくのがおすすめです。
WISNET / わいずねっと のレンタルサーバー
用途に合わせて2つのレンタルサーバープランをご用意しています。