(24) 画像の直リンクを禁止する方法

投稿者: | 2017年9月6日

1,658 views

この記事は最終更新から 1788日 が経過しています。

1. やりたいこと

他サイトから、自サイト内の画像への直リンクを禁止したい。
すなわち、他サイトの一部として自サイトの画像ファイルが表示されるのを禁止したい。

なぜならば…
自サイトを設置しているレンタルサーバーの転送量制限に影響するから。
自サイトを設置しているレンタルサーバーの負荷率が上がるから。

自分以外のアクセスがほぼ無いこのサイトでは気にする必要もないのですが… ^^;)

2. 実現方法

.htaccessに以下を追記する。このファイルを画像が置いてあるディレクトリに置く。

SetEnvIf Referer "{自サイトのURL}" ImgRefOK
Order deny,allow
Deny from all
Allow from env=ImgRefOK

説明

1行目: もし「Referer」が「{自サイトのURL}」だったら環境変数「ImgRefOk」をセットする。
2行目: これから deny → allow の順に記述する。
3行名: とりあえず全部拒否する。
4行目: もし環境変数「ImgRefOk」が設定されているならば許可する。

注意

当然だが、HTTPで Refererが送られてこなければこの対策は使えない。
使えないというか、その閲覧者は常に画像が見られない。
本来見えてほしい人にも見えなくなってしまう…

3. 実験

こんなHTMLを自サーバー、他サーバーに置いて実験してみる。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
</head>
<body>
<p>hp.dogrow.netからのアクセス時のみ、↓の枠内に画像が表示されます。</p>
<div style="border:2px #000 solid;margin:5px;padding:5px;display:inline-block">
<img src="//www.dogrow.net/hp/sample/00024/img/sample.jpg">
</div>
</body>
</html>

(1) 他サーバーに設置した場合

こちら

※当然だが対象画像がキャッシュに残っていれば表示される。

(2) 自サーバーに設置した場合

こちら

4. 応用

(1) 特定のIPアドレスからのアクセスは許可する。

以下の 2種類の書き方ができる。

1) SetEnvIfで IPアドレスを許可する場合

SetEnvIf Referer "{自サイトのURL}" ImgRefOK
SetEnvIf Remote_Addr "{許可するIPアドレス}" ImgRefOK
Order deny,allow
Deny from all
Allow from env=ImgRefOK

2) Allow fromで IPアドレスを許可する場合

SetEnvIf Referer "{自サイトのURL}" ImgRefOK
Order deny,allow
Deny from all
Allow from env=ImgRefOK
Allow from {許可するIPアドレス}

5. 参考情報

ありがとうございます。 m(_ _)m
https://qiita.com/KurosawaTsuyoshi/items/d9579c9c68666f086e68
https://qiita.com/shotets/items/17bed9029140a6d925d2


コメントを残す

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


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)