画像の直リンクを禁止する

htaccessやconfの設定で直リンクを防ぐ

あるディレクトリの画像ファイルへの直リンクを禁止したい場合どのような方法があるのだろうか。本エントリーで禁止する直リンクとは以下のようなものを指す。

<img src="http://kaihatsu.urlurl.com/img/300x250.gif" alt="test" />
<a href="http://kaihatsu.urlurl.com/img/300x250.gif">画像</a>

上のような画像を表示するタグと画像へのダイレクトなリンクからのアクセスを禁止したい。具体的には、それらのアクセスに対して403エラーを返す。

やり方

静的な画像だけでなく動的に生成した画像の直リンクも禁止したい。PHPなどで動的に生成された画像で拡張子が付いていない場合にはディレクトリ単位で禁止設定を行うことができる。

ディレクトリ単位

LocationディレクィブでURLのマッチング処理を行うことが可能で、特定のURLに対して異なった処理を行うことができる。

<Location ~ "/(images|img)/">
	SetEnvIf Referer "^http://kaihatsu\.urlurl\.com" NotDirect
	SetEnvIf Referer "^$" NotDirect
	order deny,allow
	deny from all
	allow from env=NotDirect
</Location>

上の例は、images及びimgという階層を含むURLの場合に直リンク禁止設定を行うconfの書き方。apacheのディレクティブはLocation以外にも複数存在し、以下のURLで確認できる。

http://httpd.apache.org/docs/2.2/ja/configuring.html#scope

ファイル単位

ディレクトリ単位ではなくファイル単位で禁止設定を行うことも可能。

<Files ~ "\.(gif|png|jpg)$">
	SetEnvIf Referer "^http://kaihatsu\.urlurl\.com" NotDirect
	SetEnvIf Referer "^$" NotDirect
	order deny,allow
	deny from all
	allow from env=NotDirect
</Files>

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

画像の直リンクを禁止するの記事にコメントを投稿