プロが教える店舗&オフィスのセキュリティ対策術

z.cgiをPerlで作って自分のページにアクセスがあるたびにz.cgiが実行されて足跡がログファイルに記録されるようにした場合
他人がその他人のページがアクセスされるたびにz.cgiを呼び出されるように設定した場合他人のページにアクセスがあるたびにログファイルが更新されてしまいます
この問題点を解決するためにどうしたらいいのでしょうか?

A 回答 (2件)

リンク元URLを示す環境変数 $ENV{'HTTP_REFERER'} を使って、カウンターを設置したページURLと比較チェックす

すれば如何ですか?

この回答への補足

ありがとうございます
調べてみると
HTTPでは、Refererの送信に関してはオプションと定義していますので、すべてのブラウザーが必ず送信するとは限りません。しかし、ほとんどのメジャーなブラウザーは、Refererを送信しているようです。
とありました
だから$ENV{'HTTP_REFERER'}を使うことでz.cgiのリンクを貼ったHTMLの場所が必ずしもこの環境変数から分かるとは限らないようです
マイナーなブラウザから自分をアクセスした場合にはログをとるのを止めるという事をしてもそれほど不都合は無いので問題ないと思われるのでこの方法は有力ですが
確実にz.cgiが自分にリンクしているページを知る方法は無いでしょうか?

補足日時:2005/01/12 22:59
    • good
    • 0

HTTPのリファラ以外に呼び出し元を特定する方法はないかと思います。


が、ご自身で調べられたように100%アテにできる情報ではないのでリファラチェックは通常時のログ解析の精度を落とすだけになるかと思います。
メジャーなブラウザはリファラを送出しますが足跡を残すのを嫌ってリファラを出さないように設定を変えていたり、プロクシ等でリファラの送出をブロックしている人もいます。
また、今はどうかわからないけど、ちょっと前のセキュリティソフトにはデフォルトでリファラ送出をブロックするように設定されていてリファラをチェックするCGIでカウンタが表示されないとか掲示板に書き込めない等のトラブルをよく聞きました。

不完全な方法なら他の方法もあるかもしれませんが・・・
他人がアクセスログを呼び出す利点って嫌がらせぐらいしか思いつかないし、悪意あっての行為なら防ぎきれないと思います。

この回答への補足

ありがとうございます
これは何とかしないとセキュリティホールになりかねないですね
自分のページの最後の部分に
<img="http://www/cgi-bin/z.cgi" height=0 width=0/>
を記述してz.cgiを実行させログを書き込んでいますが
今回レファラが自分のページと同じかどうかでログの書き込みを止めるようにしました
他の方法として「ソースの表示」で
http://www/cgi-bin/z.cgi
が見えないようにする方法は無いでしょうか?

補足日時:2005/01/13 00:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!