Go to information

特定の参照元(Referer)の禁止と許可

SetEnvIfディレクティブを使って、特定の参照元(Referer)のアクセスを許可、または禁止する設定例を紹介します。

特定の参照元(Referer)の禁止

SetEnvIf Referer "^http://www\.hoge\.com" ref_ng
order allow,deny
allow from all
deny from env=ref_ng

これは http://www.hoge.comURI を含むリソースから .htaccess の設置されているディレクトリのファイルが参照された場合に、その参照を禁止する設定です。同じように SetEnvIf Referer のディレクティブに続いて複数の URI を記述することで、複数の参照元のアクセスを禁止することも可能です。1行目にある SetEnvIfディレクティブは、もし環境変数(Environment Variable)に http://www.hoge.com が含まれる場合に、ref_ng として参照を禁止するという命令の処理内容になります。ディレクティブとは「命令」という意味であり、SetEnvIfディレクティブに続く属性(オプション)の部分で命令の内容を指定します。上記では Refer とあるので、これは参照元を定義します。

2行目の orderディレクティブはアクセスの許可(allow)・禁止(deny)の評価の順番を決定するものです。上の例では、allow,denyとあるので、allowdeny の先に記述しています。つまり、続く allow from allallowディレクティブの内容を先に評価し、次の行の denyディレクティブによって先に指定していた URI を含むリソースからの参照だけを禁止します。つまり、 orderディレクティブの指定で先に allowディレクティブを評価し、すべての参照元が許可されますが、次の denyディレクティブによって先の SetEnvIf Referer に続いて指定されている URI を含むリソースからの参照だけを禁止します。これによって基本的にはすべての参照元を許可して、一部の参照元からは禁止する指定が可能になります。今度は基本的にはすべての参照元を禁止して、一部の参照元を許可する指定方法をみてみましょう。

特定の参照元(Referer)の許可

SetEnvIf Referer "^http://www\.hoge\.com" ref_ok
SetEnvIf Referer "^$" ref_ok
order deny,allow
deny from all
allow from env=ref_ok

こちらは http://www.hoge.com の URI を含むリソースから .htaccess の設置されているディレクトリのファイルが参照された場合に、参照を許可する設定です。SetEnvIf Referer に続いて複数の URI を記述することで、複数の参照元のアクセスを許可することも可能です。上記の場合の SetEnvIfディレクティブは、もし環境変数に http://www.hoge.com が含まれる場合に、ref_ok として 参照(referer)を許可するという命令の処理内容です。また、2行目に SetEnvIf Referer "^$" ref_ok とあるのは、ユーザーがセキュリティソフトを入れている場合に、環境変数が空になるように設定されている場合でもアクセスできるように許可している指定です。

特定の参照元を禁止するの項目の説明の言葉を部分的に並び替えただけで冗長な内容になりますが、3行目の orderディレクティブはアクセスの許可(allow)・禁止(deny)の評価の順番を決定するもので、上の例では、deny,allowdenyallow の先に記述しているので、続く deny from alldenyディレクティブの内容を先に評価しています。そして、allowディレクティブによって先に指定していた URI を含むリソースからの参照を許可します。つまり、orderディレクティブの指定で先に denyディレクティブを評価し、すべての参照が禁止されますが、次の allowディレクティブによって先の SetEnvIf Referer に続いて指定された URI を含むリソースからの参照を許可します。これによって基本的にはすべての参照元を禁止して、一部の参照元からは許可する指定が可能になります。

この設定はどんな場合に有効か

通常、リンクは a要素によって構成・提供されますが、画像ファイルの場合、直接 img要素に第三者のウェブスペース上で公開されているリソースの絶対URI を指定して、自分のウェブページに表示させるような行為はあまり良くない行為とされています・思われています。ひとつにレンタルしているウェブスペースであれば転送量が制限されており、勝手に第三者のウェブサイトから自サイト内の画像ファイルを呼び出されたのでは、転送量がその分増加するために第三者のウェブサイトから画像ファイルを直接参照する行為はやめて欲しいというのが理由です。

たとえば、イラストやウェブページを飾る素材を配布することを目的としたコンテンツをもつサイトでは、配布している画像ファイルに対し、第三者が自分のウェブサイトに直接貼り付けて表示するような事が起こり得るかもしれません。もちろん、それは第三者自身に配布されている画像ファイルについてはローカルに保存してから自分のウェブスペース上にアップロードして利用するという知識が欠けているだけで、まったく悪意がないのかもしれません。しかしながら、それでは画像ファイルの配布元のウェブサイトの転送量は知らず知らずのうちに増加してしまうことになります。そんなこんなの理由で公開しているファイルを第三者に勝手に利用されて困っているという時には、ここで取り上げた方法で第三者のウェブサイトでは表示できないように設定することで、勝手な画像の参照を未然に防ぐことができます。

現在位置
  1. W3G
  2. Others
  3. .htaccess
  4. 特定の参照元(Referer)の禁止と許可
ナビゲーション
ステータス情報
作者
上田 遼
公開
2006-04-08T17:15:13+09:00
更新
2008-12-29T04:19:16+09:00
URI
http://w3g.jp/others/htaccess/referer
検索

直近の制作実績等:大阪人間科学大学 New! / 大阪薫英女子短期大学 New! / セキスイハイム みんなのお国じまん New!