noshi’s diary

ゲームの事、映画やドラマ、思いついた事、プログラミングの事、雑記的なことを書いています

.htaccess SetEnvIfで画像直リンク禁止

特定ファイルへの直リンクをhtaccess機能のReferer参照元)によって拒否したい場合 <Files ~ ".(gif|png|jpg|pdf|doc|xls)$"> SetEnvIf Referer "^http://hoge.com" ShowOK SetEnvIf Referer "^$" ShowOK order deny,allow deny from all allow from env=ShowOK </Files> とhtaccessに記入する。 「SetEnvIf」とは、「ある条件が成立した場合に環境変数を設定する」という意味。 1行目 Referer参照元)に「http://hoge.com」という文字列が含まれていた場合 2行目 リファラーが無い場合 この場合には、環境変数に「ShowOK」を設定 これら以外は order deny,allow deny from all で全拒否する設定。 自サイトアクセス後からURLを直接打ち込んでのダイレクトアクセスおよびリファラー無しからのダイレクトアクセスは可能で、リファラーがあった場合は全拒否となります。 リファラー無しのダイレクトアクセスを可能にしたのは、クライアントのブラウザがリファラーを吐かない場合、該当リソースへのアクセスが出来なくってしまうため。 リファラーを使ってのアクセス制限は、ある程度のリンク制限をかけることは可能ですが、ブラウザやセキュリティソフトによっては、リファラーをそもそも送って来ないブラウザもあったり、リファラー自体を偽装させることも可能なため、絶対的な制限機能とはいえないです。テスト ただし、他のサーバにあるHTMLファイルの中で直接画像にだけリンクを貼って表示させるような制限はかけることができます。