- 締切済み
他サイトからの拒否
#!/usr/bin/perl #-----同じようにいくつも追加できます。基本的にトップページを指定します $InURL[0] = "http://xxxxx.s101.xrea.com/"; local($match) = 1; foreach (@InURL) { if ($ENV{'HTTP_REFERER'} =~ /$_/) { $match=0; last; } } if ($match) { print "Content-type: text/html\n\n"; print "<html><body><center>直リンク禁止。</center></body></html>"; exit; } http://xxxxx.s101.xrea.com/以外のサイトからアクセスすると、 直リンク禁止になるのですが、 最近、search.msn.comの足跡が残っていて、 直接このCGIにアクセスとしてました。 私にはわからないですが、 http://xxxxx.s101.xrea.com/に成りすまして、アクセスとしているとしか考えられません。 そんな事が出来るのでしょうか。 それと、PERLの指定に何か不具合があるのでしょうか。 対処方法を教えて下さい。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- superside0
- ベストアンサー率64% (461/711)
このプログラムだと、 どこからでも、このCGI自体にはアクセスできて、 リファラーがマッチするか、どうかで 結果を切り替えるようになっていますね。 つまり、正常アクセス時でも、「直リンク禁止」と表示されても アクセスログには、どちらでもコードは200で サイズが異なる形で 記録されることになります。
- t_ohta
- ベストアンサー率38% (5238/13705)
HTTPリクエスト内にあるリファラー情報を元に直リンクか検知しているようですので、HTTPリクエストの内容を書き換えられていたら防ぎようがありません。 リファラー情報を使うのでは無く、セッション管理をして自サイト内でのアクセスかどうかチェックする方が精度が上がるでしょう。