• ベストアンサー

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

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

  • guuman
  • お礼率86% (1043/1206)
  • CGI
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • 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

  • アクセスログの取得について

    cgiでアクセスログの作り方を勉強しました。 そこで疑問なんですが、作ったホームページにアクセスしてきた人のログをとるには、ログを取るために作ったcgiファイルにアクセスさせないといけないんでしょうか? トップページのアクセスログを取りたいのですが、トップと別のcgiファイルを実行することでトップのログを取ることはできませんか? わけの分からないことを言っているかもしれませんがよろしくお願いします。

    • ベストアンサー
    • CGI
  • リファラを取得するためのCGI

    アクセスログを取るためのcgiをPerlで作っています。 例えば、 hogehoge.html というページのアクセスログを取るためにlog.cgiというスクリプトを用意します。 hogehoge.htmlからは、IMGタグを使用して、<IMG src="log.cgi">のようにcgiを呼び出しています。 log.cgiからは、ダミーのgifファイルを返します。 ここで、log.cgiでは訪問者のリファラを取得して記録するようにしていますが、この仕組みだとhogehoge.htmlがリファラとして記録されてしまいます。(hogehoge.htmlが呼び出したのだから、当然ですね) hogehoge.htmlへアクセスしたブラウザが持ってたリファラを取得するには、どのようにすればよいでしょうか? 今回はIMGタグでcgiを呼び出していますが、特に手段は選びません。 ちなみに、使用しているサーバーではSSIは使えません。

    • ベストアンサー
    • CGI
  • ファイルのアクセスログを知りたいのですが

    Wiindows2000の自宅サーバーについて質問です。 タイムカードのようなcgiがあり、1日に2回、アクセスがあってログが 書き換えられます。 例えばNo.001の人は、2007年1月1日に以下のようなファイルを朝作成して 朝のアクセス時刻を手入力により記録、また夕方には帰りの時刻を手入力 により記録しています。 cgi\log\001\070101.dat  この中身は 「9<>00<>17<>00<>社内業務<>」 のようになっています。 この、1日2回のアクセス時刻を管理したいのですが、ファイルの検索で、 2007/1/1に修正されたファイルを検索すると、更新日時は最後にアクセス された夕方の時刻でしかわかりません。 このファイルにいつアクセスされたか、朝と夕方の正確な時刻がわかるような ログは、どこかに残っているのでしょうか。 ご教示よろしくお願いします。

  • ユーザーディレクトリでCGIの実行ができない。

    環境 FedoraCore2 Apache で、ルートディレクトリでCGIの実行が可能であるのに、ユーザーディレクトリに設置したCGIは500エラーを起こして実行できません。 ブラウザを通してアクセスすると500が出ますが、ユーザーでコマンドラインからCGIを実行すると正常に結果を返します。 なお、コマンドラインでCGIを実行した場合にはログは残りませんが、ブラウザでアクセスした場合、以下のログファイルにログが記録されていました。 error_log [Tue May 16 08:49:21 2006] [error] [client 192.168.11.2] Premature end of script headers: test.cgi suexec.log [2006-05-16 08:49:21]: uid: (503/test) gid: (503/503) cmd: test.cgi [2006-05-16 08:49:21]: cannot get docroot information (/home/test) ちなみに、ネットで見つけた#!/usr/bin/perlの後ろに--を付加する方法では同様の500エラーが出てしまいました。 どなたか、原因及び解決法をご存じの方、ご教授いただければ幸いです。

  • 所有者nobodyのアクセスログについて

    突然ですが、質問させて下さい。 昨年末から自前のホームページにアクセスログを集計する CGI(Perl)を取り付けております。 で、バックアップをと考えたのですが、ログの所有者がnobodyになって おるため自前PCにダウンロード出来ません。 (ページカウンターも備えておるためバックアップしたいのです) 1.こういうファイルは基本的にはバックアップ出来ないものでしょうか? 2.ログファイルはCGIが自動で作ってくれるのですがあらかじめ 所有者が自分である空の同名ファイルを作っておけば所有者nobodyは 回避出来るのでしょうか?

    • 締切済み
    • CGI
  • HTMLにCGIカウンターを

    初歩的なCGI(Perl)のアクセスカウンターの作り方を学びました。 今まではHTMLでHPを作成していました。そこでトップページにアクセスカウンターを付けたいのですが、当然のことながら今のトップページは「index.html」ファイルです。このファイルにCGIによるアクセスカウンターをつける場合、「index.html」のファイルを一から「index.cgi」ファイルにPerlで書き換えなければならないのでしょうか。今の「index.html」の一部分を書き換えるだけでCGIのアクセスカウンターが設置できないものでしょうか。

    • ベストアンサー
    • CGI
  • JAVAアプレットでホームページのアクセスログ付きカウンタを作成できますか?

    こんにちは CGIが使えない環境で、なんとかアクセスログ付のカウンタを作りたいのですが、JAVAのアプレットでできないでしょうか。 もし、おわかりの方いらっしゃいましたら、お助けください。 仕様としましてはw、WEBページにはカウンタは表示せず ファイルに書き出して、その中にログをためていきたいのですが。 ログにためるないようですが、 1.どのURLから来たか。 2.何件のアクセス数です。 よろしくお願いします。

    • ベストアンサー
    • Java
  • CGIで作ったサイトのログ解析はできますか?

    モバイルサイトを全てCGIで作ろうと思っています。 (中に会員ページがあり、そのCGIと連動させるためです) そこで質問なのですが、今まではHTMLで作成してタグを貼って ログを読んでいたのですが、今度CGIで作る際にも アクセスログが読めるようにするには どうすれば良いでしょうか? THANK YOUページだけHTMLにしようと思ったのですが それも難しいようです。 (会員ページ内CGIからHTMLに移るとログアウトとなり ユーザーにとって使いにくくなるそうです) CGIは、基本的に1枚にトップも資料請求もコンテンツも 全て入れ込んで作ります。 CGIは全く詳しくないのですが、 「○○○.com/○○.cgi」から動的ページを作るとログは 「○○○.com/○○.cgi?=1023」というようになるのでしょうか? そうなればサーバーにはそのログが残るのでしょうか…? 些細なことでも結構ですので、CGIサイトのログ解析の方法について 何かご存知であれば教えて下さい。。。。。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • ***.cgi内のサブルーチンにアクセス

    とあるスクリプトを見ると、htmlページのボタンで***.cgi?サブルーチン名 へリンクさせるものがあって、特定のサブルーチンにアクセスするようになっているのですが、自作スクリプトでこのようなことを真似てもそのサブルーチンだけが呼び出されず、普通に***.cgiにアクセスした状態になります。過去の記事で***.cgi?変数名=***として、Perl側でifを使って操作させるというのを見つけましたがそれではなく、直接特定のファイルの特定のサブルーチンにアクセスしているようなのですが、どうすればできるのでしょうか?

  • Apacheのログからアクセス履歴をWeb表示するのにCGIは必要?

    Apacheのログ(/usr/local/apache/logs/access_log)を利用して アクセスカウンタのようなものを作りたいと考えています。 月毎の使用数を調べ、それを棒グラフ(PNGフォーマット)で表示させる、といったものです。 これをつくるにあたりCGIは必要なのでしょうか。 もし必要であれば、どのように使うのでしょうか。 ちなみに、開発環境は FreeBSD ver3.4, Apache ver1.3, perl ver5.005_03で、 ブラウザ(Netscape Navigator 4.7)で 本に掲載されていたCGIプログラムを動かしてみたところ 実行できませんでした。 #HTML文書が表示されるだけで #そのHTML文書が意図する表示はされなかった。 ○このApacheはCGIが使えているのか ○アクセスカウンタにCGIは必要かどうか を教えていただけたらと思います。 よろしくお願いします。

専門家に質問してみよう