• ベストアンサー

CGIのちょっとしたこと

CGIをいろいろと実験しているのですが、わからないことが2点あります。ローカルな環境で実行しています。 1.データファイル(実行ファイルではない)の拡張子なんですが、data.datとかdata.cgiとかありますよね。セキュリティ的にはcgiの方が安全なんですか?.datだとエディッタで中身がみれてしまうので・・。 2.実行ファィル内にパスワードを記述することがありますよね。そこで、実行形式のprogram.cgiファイルの中身をみられてしまうことがあるのでしょうか?rootにはみられてしまうかもしれないが、通常のユーザーがファイルのソースコードをみれてしまうということはないのでしょうか。私は多分みれないと思うのですが、特殊なソフトウェアなどが存在したりしますか。 3.実行から10秒後にファイルを作成するプログラムがあったとして、このプログラムを実行した直後にブラウザを閉じたとします。しかし、10秒後にはちゃんとファイルが作成されています。ブラウザを閉じてしまってもプロセスは残るものなのでしょうか。 ※プログラムはすべてブラウザで実行しています。

  • CGI
  • 回答数3
  • ありがとう数0

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

  • ベストアンサー
  • FM-8
  • ベストアンサー率39% (65/164)
回答No.2

あまり最近の話は知らないので,参考までに. ちょっとこったことをホームページでやらせたい場合, CGIとかSSL,JAVA,JAVAスクリプトなどあります. ほかにもあるかもしれません. この中で,「CGI」や「SSL」というのは,ホームページのサーバ側で実行してしかけを入れるものです. これに対して,JAVAやJAVAスクリプトはサーバからブラウザ側へプログラムをダウンロードし,ブラウザ側が実行するものです. サーバ側で実行すると,アクセスが集中したときに追いつかないので,JAVAなどの方がいいんだろうなとは個人的には思いますが,私自身はつかったことはありません. ということで, >※プログラムはすべてブラウザで実行しています。 この部分わからなかったのですが.CGIなら,プログラムはサーバ側で実行されると思います. サーバとブラウザが同一のマシン上で動いていると言うことですか? サーバのアプリとブラウザのアプリを同一のマシン上で別々に独立に動かすことは出来ますので. 3.については,CGIプログラムはサーバ側で動いていますので,ブラウザを閉じても残るかもしれません. 1.については,すでにご回答のようにどちらにしてもエディタで開くことは出来ます.exeファイルだってエディタで開くことはできます.  問題は,「可読性」です.中身がテキスト形式で人間が読めてしまえるものだったり,VISA XXXX-XXXX-XXXXなどとそれっぽい番号が埋め込まれていれば気づく人は気づきます. セキュリティーについては,暗号化すれば良さそうですが,このへんは詳しいことは知りません. CGIの言語はPerlですか? ご質問の感じからだと,Unixぽいですが. シェルスクリブトかもしれませんね. エディタで読めてしまえる 「実行形式のprogram.cgi」ということですので. 私は,windowsなのでexe形式で作っています. CGIにもいろいろあるのでもう少し処理系など補足された方がいいかと思います.

その他の回答 (2)

  • shige_70
  • ベストアンサー率17% (168/946)
回答No.3

1. cgiを含むWebコンテンツ関連のファイルを置く場所は決まっていますが、cgiから読み書きするデータファイルは別の場所においてもかまわないので、そういうところに置けばブラウザからは見えません。 データファイルを.cgiにするのはたしかにブラウザからは見れなくなりますが、誤って実行されてしまうこともありえない話ではないですから、おすすめできません。意味的にもおかしいですし。 ただし、ローカルでブラウザを通さないで見る場合は名前や置き場所を変えてもセキュリティ上なんの効果もありません。 2. 実行ファイル内にパスワードを埋め込むのは良い方法ではありません。別のファイルにしましょう。 まあ、これもやはりローカルではどちらにしても見るのは簡単ですから同じです。 ですから、いずれにしても暗号化する必要があるでしょう。 3. ブラウザとの接続が切れてもcgiは動き続けます。

  • shy00
  • ベストアンサー率34% (2081/5977)
回答No.1

とりあえず1,2のみ・・・ 1.拡張子がCGIでも、エディタで見れますよ   セキュリティを考えるのでしたら「data」というファイル名は使わない方がいいでしょう 2.よほどの事がない限りは見れないと思います   心配でしたら、パスワードは暗号化することお勧めします

関連するQ&A

  • ***.cgiの中身は第三者から見られることはあるのでしょうか?

    例えば、htaccessの中に AddType application/x-httpd-cgi .cgi .dat .txt という一文を追加し、datやtxtの拡張子でデータを記録します。 その中身は第三者からのぞくことは出来るのでしょうか? 通常ブラウザではCGIとして動こうとしますのでエラーが出るはずですが 見られるとすればどういう場合があるでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • lacoocanにcgiを設置

    lacoocanにアクセス数を表示するcgiを設置しようと思っています。 (1)訪問者数を記録しておくdatファイル (2)訪問者数を読み出し更新するcgiファイル (3)結果をブラウザーに表示するhtmlファイル の3つのファイルを「メモ帳」で作成して、cntというディレクトリに入れます。 lacoocan では、"homepage"というディレクトリにあらゆるファイル、ディレクトリをアップロードすることになっているので、そこに上記のcntディレクトリをアップロードします。 問題は、ここで上記(2)のcgiファイルの中の datファイルの場所を どう記述するかです。 $file = "/homapage/cnt/counter.dat" としているのですが、うまくいきません。 ブラウザーで読み込んでも、カウント数のところはブランクです。 htmlのソースを見ると、 ”訪問者数は、<!--#exec cmd="./counter.cgi" -->です。”となっていて、cgiが正常に動いているのかも定かではありません。 何かアドバイスがありましたら、よろしくお願いいたします。

    • 締切済み
    • CGI
  • cgiでメールを発信する時のユーザ

    UNIX(SUN,Solaris2.4)の環境下でcgiよりsendmailコマンドでメール を送信するようなプログラムを作成しています。 メール送信をした場合、そのデーモン(プロセス)がnobodyのユーザで 実行されているのですが、このユーザをnobodyではなくrootや違うユーザ などで送信プロセスを発行することは出来ないのでしょうか?

  • cgiからファイルの書き込みができません

    apache上で動いていたcgiプログラムがある日を境に動かなくなってしまいました。 ファイルにテキストデータを書き込みたいのですがうまく動きません。すでにあるファイルに対しては、データを追加することができるのですが、新たにファイルを作成して書き込むことができないようです。 これに前後して以下のような作業を行っています。 ・PHPのインストール ・パーミッションの変更 パーミッションの問題かと思い色々試しましたがうまくうごきません。 どなたかご助言ください。 ちなみにパーミッションは /cgi-bin(777) オーナー:ユーザー -home(777) オーナー:ユーザー -counter.cgi(777) オーナー:ユーザー  -count.dat(777) オーナー:ユーザー で試してみましたが成功しませんでした。 サーバはapacheの1.3.22です。

  • 2つのプロセスを実行するCGI

    1つのCGIで2つのプロセスを実行することを考えています。 1つは、数分かかるような処理を行い、もう1つはユーザにその処理が”実行中”であるといったメッセージを表示しようと思っています。 CGIはC&C++で作成しようと考えており、forkして子プロセスで、数分かかる処理を実行し、親プロセスでメッセージ画面表示といった流れを考えています。 で、質問ですが、この場合、メッセージ画面で子プロセスが実行している間、砂時計が表示され続けますが、これを消す方法がありますでしょうか? また、1つのCGIで、このように2つのプロセスを実行する場合に、何か良い方法はありますでしょうか?

    • 締切済み
    • CGI
  • CGIプログラムを使ってレースの結果をHTMLに表示

    CGIプログラムの件でご質問したいのですが、datファイルのレース結果をCGIプログラムを使ってHTMLに表示したいと思っています。 datファイルの内容は、レースの結果が1位から順に10位くらいまでA,B,Cクラス混合で並んでいます。 1,Aクラス,青チーム,12:50,山本太郎 2,Cクラス,赤チーム,11:23,山田花子 3,Bクラス,黄チーム,10:52,松本典子 4,Aクラス,桃チーム,10:32,加藤茶子 それをCGIプログラムによって、各クラスごとに表示します。 CGIのプログラムの内容は、 open (FILE, "<data.dat") || die "File 'data.dat' Open Error."; @all = <FILE>; close(FILE); foreach (@all){ ($data1, $data2, $data3, $data4,$data5) = split(/,/, $_); next unless ($data2 eq "A"); &one_data; } sub one_data { print << "END_OF_ONE"; <P>$data1位<BR> $data2<BR> $data3<BR> $data4<BR> $data5<BR> </P> END_OF_ONE } 1; だいたいこんな感じですが、この各クラスごとに表示したHTMLのファイルの順位のところが、もとのdatファイルの順位になってしますので、それを1位から順にクラス別の順位として表示したいのです。 それにはどのようにしたらよいでしょうか? すみません、あまりperlの言語の知識がないもので。。

    • 締切済み
    • CGI
  • CGIの起動が遅い

    Web上から作成したCGIを起動した場合に、そのCGIが存在するサーバ上ではすぐに実行されるのですが、他のPCからサーバにアクセスしてCGIを起動するとブラウザの下部にCGI実行中のメッセージが表示されてから結果が表示されるまでに時間がかかっています。(約30-60秒) 他のネットワーク処理等は普通に実行できるので特にネットワークが重い等の問題はないと思うのですが何が問題なのかアドバイスをお願いします。 サーバOSはRedHat Linux 5.1、apacheはver2.2です。

    • 締切済み
    • CGI
  • cronでtxt、datなどのファイルを更新するには?

    はじめまして、お手数をお掛けいたしますが、どうぞ詳しい方お力添えを宜しくお願い致します! 3時間に一度だけプログラムを実行し、 .datファイルのデータを更新するというのを作成しようとしています。 データの中身は、数字などで、更新するたびに+1ずつ数字を動かしていきたいと思っています。 出来たプログラムを、自分で更新して動かすときちんとデータ更新しているのですが、 cronを設定し、cronから動かすと更新ができていません。 エラーメールを見ると、どうも更新したいdataファイルが読み込めてないようで。 cronを使うのは初めてなのですが、データを読み込んで、そのデータを分割、その内の数値に+1し、また書き込むということはできないのでしょうか? cronの設定は、レンタルサーバ上で出来るので、そちらで設定しています。 コマンドは /home/アカウント/www/○/○/cgi/○/time.cgi と、cgiの場所までを記述し、 時刻は * * */3 0 となっているハズと思います(コンパネからの設定なのでなんとも…) どうぞご教授くださいませ…!

    • ベストアンサー
    • CGI
  • アパッチやプロバイダのcgi-bin

    ディレクトリにおいてある PerlなどのCGIスクリプトが使う テキストデータ(jouhou.dat)は外部から 見られる心配はないのでしょうか? アパッチの /var/www/cgi-bin/jouhou.dat にアクセスするために 他のパソコンから http://192.168.1.2/cgi-bin/jouhou.dat (192.168.1.2はアパッチが動いているPC) とすればブラウザが表示拒否されました

    • ベストアンサー
    • Perl
  • perlで重複をさせない処理

    perlでプログラムを書いています。躓いたところが あるのでどうかご協力おねがいします。 a.datとa.cgiがあるとします。 a.datには、 a b c b a とデータが入っています。 そこで、datファイルを見てa、b、cというそれぞれ タイトルが入ったテーブルを自動的に作成させたいです。 (datの中身は増えていくので種類が増えたらテーブルも 増えます。重複はまとめて1個にしたいです) まずaというテーブル作成→改行→bというテーブル作成 →改行・・・といった感じです。(dat内でアルファベットで昇順) ファイル操作の追加モードみたいな感じです。 結構考えたのですがコードが思いつかずここにきました。 どうか、考え方だけでもいいのでよろしくおねがいします。

    • ベストアンサー
    • CGI