CGIでパスワードのセキュリティについて

このQ&Aのポイント
  • CGIで管理者用パスワードを設定する際のセキュリティについての懸念があります。
  • インターネットからファイルをダウンロードするアプリケーションなどでソースを見られてしまう可能性があるのか、もし見られてしまう場合にはどのように防ぐことができるのか知りたいです。
  • 現在のパスワード設定方法は、xxx.cgi?pass=pass1234のようにしていますが、これで十分なセキュリティが保たれるのでしょうか。
回答を見る
  • ベストアンサー

CGIでパスワードのセキュリティについて

CGIで管理者用パスワードを設定しますが(画面入力と比較するワード)、 このパスワードは インターネットからファイルをダウンロードするアプリ ケーションなどでソースを見られてしまう事は無いのでしょうか? もし見られてしまう場合 何か防ぐ方法は有りませんか? xxx.cgi?pass=pass1234 とかやれば良いでしょうか? # 管理用パスワード $pass = 'pass123'; ←これです パスワード <input type=password name=pwd size=8> if ( $in{'pwd'} ne $pass ) { &error("パスワードが違います"); } サーバーは ニフティ又はビックローブを予定。

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

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

  • ベストアンサー
  • nipotan
  • ベストアンサー率59% (134/227)
回答No.1

> CGIで管理者用パスワードを設定しますが(画面入力と比較するワード)、 > このパスワードは インターネットからファイルをダウンロードするアプリ > ケーションなどでソースを見られてしまう事は無いのでしょうか? サーバが "正常に" 稼動していて、"正常に" CGI を実行しようとする動作をしている限りは、CGI のソースを見られる事はありません。 > もし見られてしまう場合 何か防ぐ方法は有りませんか? > xxx.cgi?pass=pass1234 とかやれば良いでしょうか? 見られてしまわないので、問題ないですが、QUERY_STRING にパスワードを含めれば、それ自体が URL になるので、危険です。QUERY_STRING からパスワードを受け取らないようにしたほうが "より" 安全です。 ただ、パスワードなんて、手当たり次第試せば、「絶対に探し当てられる」ものです。なので、「探し当てられにくいようにする」工夫をするとか、特定のノード (特定の IP アドレス) からでしかパスワード入力を許可しないようにする工夫をされたほうがいいと思います。

関連するQ&A

  • ログイン パスワード変更のプログラム

    ログインのプログラムをこんな感じで書いたのですが、 パスワードを変更できるようにするには、どういったプログラムを 追加すればいいのでしょうか? <? $fl='<name>xxx</name><pass>abcde</pass><name>yyy</name><pass>abcde</pass><name>zzz</name><pass>abcde</pass><name>ddd</name><pass>abcde</pass><name>guest</name><pass>guest</pass>';//ファイルから読み込んだ文字列 $name=$_POST['username'];//名前 if(ereg('<name>'.$name.'</name><pass>[a-z0-9]+</pass>',$fl,$a)){ $pass=ereg_replace('[^ ]+<pass>','',$a[0]); $pass=ereg_replace('</pass>','',$pass); if($pass==$_POST['pass']){ echo 'ログインしました。'; }else{ echo 'パスワードが違います。'; } }else{ echo '登録されていません。'; } ?> <form method="POST"> name<input name="username"><br> pass<input type="password" name="pass"><br> <input type="submit" value="ログイン"> </form> 宜しくお願い致します。

    • 締切済み
    • PHP
  • 管理パスワードによる認証

    既存のファイルに管理者による認証を付加したいと思いますが、下記のコードではうまくいきません。アドバイス下さい。 <?php //パスワードの設定 $password = "admin"; //パスワードチェック passchk(); function passchk(){ global $password, $post; $p = $post['pass']; if ($p == $password) { echo "認証成功!"; // return; } else { echo<<<EOM <p>パスワードを確認して下さい。</p><br> <form action="login.php" method="post"> パスワード:<input type="password" name="pass" size="8"> <input type=submit value="ログイン" /> </form> EOM; exit; } } ?>

    • 締切済み
    • PHP
  • cgiでのユーザーIDとパスワードの認証

    パスワードの確認しかないcgiにユーザーIDの認証も追加したいのですが、どのように変更すれば良いのかわかりません。皆さんのアドバイスよろしくお願いします。 ※ユーザーID $text = 'test' # パスワードの確認 if ($formdata{'pass'} eq $password or $cookies{'pass'} eq $password) { $access = $upload = $delete = 1; $cookie = "Set-cookie: pass=$password\n"; } elsif ($formdata{'pass'} or $cookies{'pass'}) { $form_log .= "パスワードが正しくありません。<br>"; }

  • フォームで条件によってボタンの処理を変える

    フォームでパスワードを入力してもらい、確認用にもう一度入力した際、 誤入力があればアラート、正しく同じ値が入力されればsubmitにしたいと思っており、下記のようなコードを書きましたが、同じ値を入力した際にIEでエラーがでてしまいます(FirefoxやSafariでは動きます)。 当方Javascriptの知識に乏しく、どなたか助けていただけませんでしょうか?宜しくお願いいたします。 <html> <script language="JavaScript"> <!-- function passCheck(){ pass1 = document.free.PASSWORD.value; pass2 = document.free.PASSWORD2.value; if(pass1!==pass2) {alert("入力された確認用パスワードが違います");} else if(pass1==pass2) {document.free.submit.type="submit";} } //--> </script> <body> <form method="POST" action="submit.cgi" name="free"> <p> <input type="password" size="20" name="新パスワード" id="PASSWORD"><br> <input type="password" size="20" name="新パスワード(確認)" id="PASSWORD2"> </p> 確認のため、上記と同じパスワードをご記入ください。 <p><input type="button" name="submit" value="確認する" onclick="passCheck()"/></p> </form> </body> </html>

  • 配布されてるCGIをダウンロードしたのですが

    CGIは超がつくほどの初心者ですがサーバーへは無事に接続できたみたいです。 でも、接続時にCGIプログラム?から指定のIDが見当たりません。 このように表示されます。 それで質問させていただきたいのです。 IDとパスワードを入力する必要があるとCGIの説明にも載ってたので、 任意のIDとパスワードを入力する。と でもどこに入力すればいいのか? 詳しい方か分かる方が入たら教えてください。 print "<tr><td align=\"right\">User ID</td><td><input type=\"text\" name=\"usr\" value=\"\"></td></tr>\n"; print "<tr><td align=\"right\">Password</td><td><input type=\"password\" name=\"pass\" value=\"\"></td></tr>\n" 超初心者ですいません。

    • 締切済み
    • CGI
  • パスワード認証がうまくできない

    パスワード認証がうまくできません ----------------------HTMLのフォームの部分---------------------- <form action="http://localhost/cgi-bin/access.pl" method="get"> <td><Div Align="right">ユーザID:</Div></td><td><input type="text" name="ID" size="25"></></td> </tr> <tr> <td>パスワード:</td><td><input type="password" name="PASS" vsize="25"></td> </tr> </table> <input type="submit" value=" ログイン "> ----------------------Perlの認証の部分の内容-------------------- sub ninshou { my $Data=$ENV{'QUERY_STRING'}; my $CheckIDPASS; my $CheckFinish=0; open(IMPUT,"<","ID-PASS.txt"); while(<IMPUT>){ $CheckIDPASS=$_; if($CheckIDPASS eq $Data){ $CheckFinish=1; } } if($CheckFinish==1){ print "認証しました<br>\n"; } else{ print"パスワードが正しくありません<br>"; } ------------------------ID-PASS.txtの内容---------------------- ID=TARO&PASS=0000 ID=JIRO&PASS=1111 ID=SABURO&PASS=2222 --------------各ソースここまで----------------- HTMLのフォームにIDとPASSを入力して療法が正しければ先に進める CGI(Perl)を作ってるんですが、なぜかID-PASS.txtの一番下に 記入しているID=SABURO&PASS=2222 ID SABURO PASS 2222 以外で認証することができません。SABURO / 2222 と入力 したときのみうまく認証できます。 他のID/PASSで認証できないのはなぜでしょうか?

    • ベストアンサー
    • Perl
  • 送信先CGIの選択

    <form method="post" action="file.cgi"> <input type="hidden" name="password" value="xxx"> <input type="hidden" name="action" value="zzz"> <input type="text" name="name" size="50" value=""> </form> この場合、送信先CGIがfile.cgiに固定されていますが、action="送信先"をリストボックス等を使って複数選択できるようにしたいと考えています。可能でしょうか?

    • ベストアンサー
    • Perl
  • if文が・・・??

    CGIの認証部分を改造中です。 修正画面に入るとき、各ユーザーのパスワードと管理人パスワードを設定し、ユーザーなら自分の記事の一部を管理人なら記事とユーザー名等の修正が出来るというものです。 さて、以下のように作りました。 if ($in{'pass1'} ne $pass || $in{'pass1'} ne "$adminpass"){&error("パスワードが違います.$pass.$in{'pass1'}.$adminpass.");} あ、後ろのほうは確認用です。 これだと、文法的に間違えはないとおもうのですが、エラーが帰ってきます。 もちろん、「$passと$in{'pass1'}」または「$in{'pass1'}と$adminpass」は同じです。 ちなみに、 if ($in{'pass1'} ne $pass){&error("パスワードが違います");} とすると、ちゃんと通るし、 if ($in{'pass1'} ne "$adminpass"){&error("パスワードが違います");} こっちでもちゃんと通ります。 もちろん、PASSはちゃんと変更してです。 これって何かおかしいですか? 出来れば、「ここはおかしくないよ」という回答もお待ちしてます。

    • ベストアンサー
    • Perl
  • if文がうまく書けない(T.T)

    某CGIを改造してます。 CGIにIDとPassを組み込もうとしているのですが、うまくできません。 いろいろな認証CGIを真似してやっているのですが… sub pass2{ open (FILE,"$passdata"); @file = <FILE>; close FILE; foreach (@file) { local($nm,$ps)= split(/,/,$_); if ($nm eq $in{'name'} && crypt($in{'password'},$ps) eq "$ps") { &admin; exit; } } &error("認証に失敗しました?"); } この状態だと動くことは動くのですが、ちょっと面倒なので逆転させたいんです。 そこで以下のように作り変えてみました。 if ($nm ne $in{'name'}) { &error("名前が違います"); exit; } if ($nm eq $in{'name'} && crypt($in{'password'},$ps) ne "$ps") { &error("パスワードが違います。"); exit; } } &admin } こうすると、なぜか正しい名前を入れても「名前が違います」のメッセージが出ます。 いったいどこが間違っているのですか? 言語はperlです。 お願いします。

    • ベストアンサー
    • CGI
  • パスワードの照合について

    お世話になっております。 データベースに保存されたパスワード($password)とフォームに入力されたパスワード(($_POST['pass'])が一致した場合次のページに進むようにしたいのですが、 if($_POST['pass'] == $password){・・・ if ( strcmp($_POST['pass'],$password) == 0 )・・・ いずれの方法でも結果は常にFALSEとなってしまいます。 パスワードは英数字のみです。 上記の書き方では動作しないのでしょうか? アドバイスを頂けたら嬉しい限りです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう