- 締切済み
KENT WEBさんのBASIC認証(PasswordManager) について質問です
通常、掲示板入口にベーシック認証に設け、登録させて入室という経緯になりますが、 そのベーシック認証のIDを、掲示板書込時に入力させたいと考えています。 詳しく解説すると、書き込みをする時には、そのベーシック認証のIDを掲示板書込時に入力必須、 会員じゃない人間には、閲覧のみを可能にさせたいと考えているんです。 その為、ベーシック認証の会員登録はさせますが(書込に必須な為)、 掲示板入口のベーシック認証は排除しても(誰でも閲覧可能にする為)、 セキュリティ的に見て大丈夫なんでしょうか? こういった方法をやってる方もいそうなので質問してみました。 それならばBASIC認証(PasswordManager) は必要無いんじゃと言われそうですが・・。 他に合いそうなCGIが見当たらないので、もしできるなら、 設置してやってみたいと考えていますので、宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- pipipi523
- ベストアンサー率40% (148/365)
>どうやって分けるのでしょう?サッパリです。 jewelでの簡単な対応方法を考えてみました(未確認) 1.ディレクトリの準備 bbs bbs2 と、ディレクトリを作ってbbs2にベーシック認証を掛けるとして、 bbsの中身 jewel.cgi menu.html index.html bbs2の中身 jewel.cgi data(フォルダ) とします(jewel.cgiはとりあえず同じものとしておく) 2.bbsの中身修正 menu.html <A href="../bbs2/jewel.cgi?action=memberform" target="input">新規登録</A> <A href="../bbs2/jewel.cgi?action=member_view&sex=0" target="input">男性登録者</A> <A href="../bbs2/jewel.cgi?action=member_view&sex=1" target="input">女性登録者</A> jewel.cgi $cgifile2 = '../bbs2/jewel.cgi'; #追加 $mensfile = '../bbs2/data/mens.dat'; # 男性用ファイル $ladysfile = '../bbs2/data/ladys.dat'; # 女性用ファイル <A href="$cgifile2?action=mailform&sex=$in{'sex'}&number=$no&to_name=$name"><B>$name</B></A>さん $date #elsif ($in{'action'} eq 'memberform') { &in_data; } #elsif ($in{'action'} eq 'regist') { ®ist; } #elsif ($in{'action'} eq 'mailform') { &mailform; } #elsif ($in{'action'} eq 'sendmail') { &sendmail; } ↑分岐しないよう念のためコメントアウト たぶんこれだけでOKだと思います >IDとパスワードを同時にチェックさせるには、どういう記述にしたら宜しいでしょう。 パスワードがどのように入力されているのか解りませんが、こんな感じでしょうか while (<IN>) { local($id,$pw) = split(/:/); if ($in{'id'} eq $id) { $f = 1; if($in{'pass'} eq $pw){ $f = 2; $_ = "$id:$pw\n"; }} push(@new,$_); } close(IN); if (!$f) { &error("会員ID ($in{'id'}) は存在しません"); }elsif($f==1){ &error("パスワードが誤っています"); }
- pipipi523
- ベストアンサー率40% (148/365)
掲示板入口のベーシック認証は無くても問題無いと思います 書き込みの部分だけベーシック認証を掛ければ良いのではないでしょうか? 書き込みフォームを表示する部分と書き込み処理の部分だけを分けてベーシック認証を掛けたディレクトリに入れるとか。
補足
pipipi523さん、お久しぶりです!! 前回は本当に有難うございました! 無事に修正機能も追加できまして、本当に嬉しい限りです。 修正時に出てしまう改行タグの排除にも成功しました。 CGIの面白さに惹かれています。 前回、pipipi523さんに教えて頂けなければ、断念してしまっていたと思います。 またレスして頂いて嬉しいです。宜しくお願いします。 例のJewelですが、このCGIだけの単発で作動しているので、 以下のことは可能なんでしょうか?? >書き込みフォームを表示する部分と >書き込み処理の部分だけを分けてベーシック認証を掛けたディレクトリに入れるとか。 どうやって分けるのでしょう?サッパリです。 この私、パッと閃かないのが、まだまだ素人ですね@@; HTMLなら単純に分けれると思いますが、CGIので可能でしょうか? 現在、書き込み時にID(ベーシック認証の)ログをチェックしに行って、 該当があったら書き込みという作業は完成致しました。 ですから、書き込みするには会員登録しなければいけないという、 1つ目の予定はクリアしました。あとは残りの、誰にでも閲覧させられるということだけです。 なんのための(PasswordManager)なのか分からないですが、 これがないと、会員ID・パスを登録作成、 一人一人に自動で返信という作業ができないですものね。 ベーシック認証を排除しても、 ディレクトリなどセキュリティ的に平気なら排除しようと思います。 排除したら、htpassにあるパスワードも同時にチェックさせようかと思っています。 現在書き込み時に、以下でIDチェックしています。 始めの設定部分 #会員ファイルIDチェック $pwdfile =●○◆☆××◎●~.htpasswd 書き込みチェック部分 # 会員IDチェック local($f, $enpw, @new); open(IN,"$pwdfile") || &error("Open Error: $pwdfile"); while (<IN>) { local($id,$pw) = split(/:/); if ($in{'id'} eq $id) { $f = 1; $enpw = $pw; $_ = "$id:$newpw\n"; } push(@new,$_); } close(IN); if (!$f) { &error("会員ID ($in{'id'}) は存在しません"); } IDとパスワードを同時にチェックさせるには、どういう記述にしたら宜しいでしょう。 また宜しくお願い致します。