戻る ※過去ログ・転載/引用専門です。
■ 生IPでないとホームページに入れないようにしたい ■
■ 現在串をなんとかしようと(生IPでないとホームページに入れないようにしたい)
悩んでいるのですが、したの話題はそのことなのですか?
もし、そうなら詳しく教えて欲しいのですが・・・。
CGIをつかって$ENVの環境変数だけで串と本物IPの区別をつけることができるのでしょうか?
■ 完全じゃないけど、.htaccessに「proxy」って文字が入るのはアクセス禁止にするとか
FORWARDED_FORに何もはいってないのとかHTTP_VIAにsquidとかproxyって文字がはいってるのとかを
禁止にすればある程度できるんじゃない?
proxyリスト作って参照するとかさ。 でもproxy禁止にしたら訪問者減るよね。
仲間内だけのとこだったらいいかもしれないけどさ。
■ HTTP_CONNECTION=Keep-Aliveをチェックしましょう。
IE4とネスケ3では、生アクセスの場合に限り、この変数と値が取得できます。
ブラウザによっては(LYNXとか、、、モザイクも?)、この変数を送っていないようなのですが
IEもネスケも無料なので・・・どっちかを使ってもらいましょう(笑)。
ただ、この変数は、ユーザー側でおもいっきり偽装できてしまいますので・・・笑い
あわせて、HTTP_VIAといった串固有変数に何か値が入っていないかチェックします。
HTTP_CONNECTION=Keep-AliveとHTTP_VIAのチェックで、ほとんどの串が引っかかると思いますが・・・
環境変数だけでは、串かどうか判別できない串も存在します。(すごーく少ないと思いますけど)
そういうのは、事後になってしまうかもしれませんが、見つけ次第、.htaccessのdenyリストに
追加していくしかないでしょう。
でも、あまりやってほしくないですけどね<串制限
わたしも見れなくなっちゃうし(笑)。 まぁ、荒らされてお困りでしたら、、、ということで。。。
■ うちの場合はHTTP_VIA と HTTP_PROXY_CONNECTION と HTTP_CACHE_INFO
の3つチェックして串かどうか判断してました。ここに何か値がはいってれば串経由ということで。
if($CONNECTION ne ""){$proxy=1;}って感じですね。
でもこれだと全ての串チェックしちゃうんで後からHTTP_VIA と HTTP_X_FORWARDED_FOR と
HTTP_FORWARDEDの3つチェックしてIP取得できれば(匿名じゃなければ)串OKというのを
付け加えました。
if( $ENV{'HTTP_VIA'}=~s/.*\s(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/ ){$proxy=0;}って感じです。
結局串制限しちゃうとHP公開する意味無いと思いますよ。
アクセスしてくる人がかなり制限されますので。うちも結局とっぱっらってます。
仲間内だけでやるんでしたらパス認証でやった方がいいのではないのでしょうか?