よく使うhtaccess
cman.jp cman.jp > よく使うhtaccess > 解説・自動作成 > 利用制限_Referer

htaccessによるアクセス制限(Referer)

ホームページへのアクセスには、遷移元の画面情報(Referer)が含まれています。
この情報のことをリファラ(referer)と言います。
htaccessでリファラを利用し遷移元画面を判定しアクセス制御を行うことが可能となります。たとえば、画像への直接リンクを禁止したり、特定ページからのリンクを拒否する場合などに、リファラ(referer)を利用したhtaccessが利用されます。
ただし、Refererは偽装も可能なため必ず正しい情報とは限りません。

広告

Referer(遷移元情報)によるアクセス制限作成

以下で特定URLからのアクセスを制限するhtaccessを作成することができます。


リファラ(遷移元)
URL

(例)「example.ne.jp」


対象ファイル

拒否/許可
【入力の意味】 ① が遷移元(リンク元)の場合は、② の表示を ③ する
ページTOP

遷移元URLによるアクセス制限 解説

リファラ(referer)の値

refererには遷移元のURLが入っていますが、以下の通りhtml内の画像やjs,cssなどについては、自分のURLが設定されています。

ホームページ(html)を開くとき、画像や外部js,外部cssなどは段階的にアクセス(取得)されます。
最初はhtml本体のテキストが表示され、html内の画像など外部ファイルはhtmlが開かれた後にhtmlから再要求され、最終的にhtmlが組み立てられ表示されます。
html内の画像やjs,cssなどから見ると、遷移元が自分のURLとなります。

この仕組みを利用することで、自分のサイト以外で画像の表示を拒否することが可能となります。

【注意】
refererは偽装可能です。このため100%の拒否とはなりません。
また、ブラウザによってはrefererを出力しないように設定できる場合もあります。

ページTOP

自分のサイト以外で画像の表示を拒否する(画像リンク禁止)

htaccessでrefererを使用することで、サーバ内の特定ファイルへの直接アクセスや外部からのリンクを拒否することができます。
以下は、画像の直接リンクを禁止するサンプルとないます。

【注意】
refererは偽装可能です。このため100%の拒否とはなりません。
また、ブラウザによってはrefererを出力しないように設定できる場合もあります。
この場合、画像が正常に表示されなくなります。

構文例
SetEnvIf Referer "^http://www\.example\.jp" ok_url
SetEnvIf Referer "^https://www\.example\.jp" ok_url
<Files ~ "\.(gif|jpe?g|png)$">
order deny,allow
deny from all
allow from env=ok_url
</Files>

上記は次を意味しています

「http://www.example.jp」または「https://www.example.jp」で始まるURLからのアクセスのみ「.gif」「.jpg」「.jpeg」「.png」の拡張子をアクセス可能とする。

→ 画像を表示するのは自サイト「www.example.jp」のみとする。画像リンクを禁止する。

SetEnvIf Referer

Refererを判定して結果を保存します。
パターンマッチ(正規表現)で指定します。

上記サンプルの場合、Refererが「http://www.example.jp」で始まっている場合、
「ok_url」としています。(後で判断に使用)

Files

許可/拒否の対象ファイルを指定します
アクセス制限(IPアドレス)」参照

上記サンプルの場合、画像系の拡張子「.gif」「.jpg」「.jpeg」「.png」を対象としています。

order

許可(allow)と拒否(deny)の判定順を指定します
アクセス制限(IPアドレス)」参照

「order deny,allow」は、拒否(deny)→許可(allow)の順に判定することで、許可の設定を行っています。

deny

拒否(deny)の条件を指定します
アクセス制限(IPアドレス)」参照

「deny from all」を指定し一旦「すべて」のアクセスを拒否としています。

allow

許可(allow)の条件を指定します
アクセス制限(IPアドレス)」参照

「SetEnvIf Referer」で判定した結果「ok_url」の場合に許可としています

「 <Files ~ "\.(js|css)$"> 」に変更すれば、自サイト以外からの外部JavaScriptや外部CSSのアクセスを拒否することができます。

ページTOP

特定サイトからのリンクを拒否する

htaccessでrefererを使用することで、特定サイトからのリンクを拒否することができます。

【注意】
refererは偽装可能です。このため100%の拒否とはなりません。
また、ブラウザによってはrefererを出力しないように設定できる場合もあります。

構文例
SetEnvIf Referer "^http://www\.example\.jp" ng_url
SetEnvIf Referer "^https://www\.example\.jp" ng_url
order allow,deny
allow from all
deny from env=ng_url

上記は次を意味しています

「example.jp」からのアクセスすべて拒否する。

→「example.jp」内のリンクを拒否する。

SetEnvIf Referer

Refererを判定して結果を保存します。
パターンマッチ(正規表現)で指定します。

上記サンプルの場合、Refererが「http://www.example.jp」で始まっている場合、
「ng_url」としています。(後で判断に使用)

order

許可(allow)と拒否(deny)の判定順を指定します
アクセス制限(IPアドレス)」参照

「order allow,deny」は、許可(allow)→拒否(deny)の順に判定することで、拒否の設定を行っています。

allow

許可(allow)の条件を指定します
アクセス制限(IPアドレス)」参照

「allow from all」を指定し一旦「すべて」のアクセスを許可としています。

deny

拒否(deny)の条件を指定します
アクセス制限(IPアドレス)」参照

「SetEnvIf Referer」で判定した結果「ng_url」の場合に拒否としています。

ページTOP

refererによるアクセス制限(拒否/許可)サンプル

以下のボタンでサンプルをご確認いただけます。

サンプル
ページTOP
広告
QrCode
このページのURL
スマートフォン・タブレット運営:株式会社シーマン