• ベストアンサー

自ホームページ用のアクセスログCGI

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

質問者が選んだベストアンサー

  • ベストアンサー
  • panick
  • ベストアンサー率40% (26/64)
回答No.1

リンク元URLを示す環境変数 $ENV{'HTTP_REFERER'} を使って、カウンターを設置したページURLと比較チェックするようにCGIを修正すれば如何ですか?

guuman
質問者

補足

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

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

HTTPのリファラ以外に呼び出し元を特定する方法はないかと思います。 が、ご自身で調べられたように100%アテにできる情報ではないのでリファラチェックは通常時のログ解析の精度を落とすだけになるかと思います。 メジャーなブラウザはリファラを送出しますが足跡を残すのを嫌ってリファラを出さないように設定を変えていたり、プロクシ等でリファラの送出をブロックしている人もいます。 また、今はどうかわからないけど、ちょっと前のセキュリティソフトにはデフォルトでリファラ送出をブロックするように設定されていてリファラをチェックするCGIでカウンタが表示されないとか掲示板に書き込めない等のトラブルをよく聞きました。 不完全な方法なら他の方法もあるかもしれませんが・・・ 他人がアクセスログを呼び出す利点って嫌がらせぐらいしか思いつかないし、悪意あっての行為なら防ぎきれないと思います。

guuman
質問者

補足

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

すると、全ての回答が全文表示されます。

関連するQ&A