プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
ファイルの直リンクを禁止する(リファラを見るやり方)
結論から書くと「.htaccess」ファイルの中に、例えば

SetEnvIf Referer "^http://i-3-i\.info" aaa
SetEnvIf Referer "^$" aaa
order deny,allow
deny from all
allow from env=aaa

とか書けばOKです。

諸般の事情によりファイルへの直リンクを禁止する必要が出てきましてね。
対象がPDFファイルだったのですが、ちょちょいのちょいとできんのかね?というのが
今回調べたきっかけです。

ふむふむ(--)

「.htaccess」に

SetEnvIf Referer "^http://i-3-i\.info" aaa
SetEnvIf Referer "^$" aaa
order deny,allow
deny from all
allow from env=aaa

とか書いて放り込んでおけば、そのディレクトリ内のファイルは直リンク禁止になるのですね。

「.htaccess」の中身の説明は以下の通り。

SetEnvIf Referer "^http://i-3-i\.info" aaa

の部分は「リファラに『http://i-3-i.info』があったら『aaa』って名前を付けるよ」です。
「http://~」の前にゴミみたいにくっついている「^」は「~~で始まる」の意味ね。
「\」がついているのは「.」をエスケープするためです。

同じように

SetEnvIf Referer "^$" aaa

の部分は「リファラが空だったら『aaa』って名前を付けるよ」ね。
「^」は「~~で始まる」の意味で、「$」は「~~で終わる」の意味です。
何も無しで始まって何も無しで終わるから、つまりは空っぽ。

order deny,allow

の部分は「まず拒否ってから許可で上書きね」の指示です。

deny from all

の部分は「みんな拒否!何人たりともアクセスすることを許さん!」の指示です。

allow from env=aaa

の部分は「『aaa』って名前の奴はアクセスしていーよ」です。
「aaa」って名前が付いているのは

・リファラに「http://i-3-i.info」がある
・リファラが空

のどちらかなので、これで変なところ(http://i-3-i.info以外)からの直リンクは
抑制できるってな理屈です。

まぁURL直打ちだったり、セキュリティソフトでリファラを空にすると
あっさり抜けちゃうんですけどね(-。-)ぼそっ

「え~、URLの直打ちとかも抑制したいんだけど」という方は

PHP、ファイルの直リンクやURL直接入力での参照を禁止する(リファラを見ないやり方)

をご覧ください。
気休めだったらリファラを見るやり方で十分だと思いますが、
もちっと気合入れるならセッションとかも使った方が良いと思います。
と言うことで

PHP、ファイルの直リンクやURL直接入力での参照を禁止する(リファラを見ないやり方)

の記事も気が向いたら見てやってくださいませ(人´∀`)(宣伝)

取りあえず、完了\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● その他  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事