特定のリファラー(Referer)から「画像」参照のみをブロックする方法をまとめました。(2018/01/15作成)
455992 / Pixabay
0.設定要件
参照元(Referer)が https://bad.example.com (または http://bad.example.com) からのアクセスであった場合、拡張子「.gif .jpeg .jpg .png」ファイルは、ステータスコード「403 Forbidden」を返す。
1.Apache2.2系の場合
SetEnvIf Referer "^https?://bad\.example\.com" ref_ng <Files ~ "\.(gif|jpe?g|png)$"> order allow,deny allow from all deny from env=ref_ng </Files>
.htaccessによる制御
2.Nginx1.x系の場合
map $http_referer $ref_ng { ~^https?://bad\.example\.com/ 1; default 0; } … location ~ \.(gif|jpe?g|png)$ { if ($ref_ng) { return 403; } }
Nginxの設定ファイルによる制御
3.設定解説
https? は「s」の0回または1回の繰り返しを表し、つまり httpと https両方で有効となります。
Apacheの Orderは、SQLの orderと異なり、後に記述された方がデフォルトになります。
Nginx mapディレクティブは、特定の変数の値を別の変数の値に応じて設定できる機能です。
以上