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