人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

はじめまして、初めて質問する者です現在、CGIで会員制の掲示板を作っているのですが、IDとパスワードの受け渡しのところで躓いています。仕様は会員さん全員のIDとパスワードがフォルダの中にあり一人一人,ID.prfというファイルの中にパスワードが入っています。その、IDとパスワード使用します。参考になるサイトやどんな文章にすればいいのでしょうか?宜しくお願いいたします。

●質問者: miller31
●カテゴリ:ウェブ制作
✍キーワード:CGI はじめまして サイト パスワード ファイル
○ 状態 :終了
└ 回答数 : 8/8件

▽最新の回答へ

1 ● sasada
●15ポイント

CGIの開発言語にもよると思いますが。。。

通常は、クッキー(cookie)を使用するのではないでしょうか。

アクセス一回毎に認証をするつもりがないなら、セッション管理の利用をお勧めします。

JSPやPHPをお使いならば、標準機能の中にセッション管理機能があります。

PerlやC言語など、他の環境をお使いの場合でも、上記のクッキーを応用する事でセッション管理は可能です。

余計なお世話を承知で言えば、セッション管理が不要で、コンテンツ(ページ)単位の認証のみでよいなら、Webサーバー(あるいはOS)標準の認証機構を用いた方が、よりセキュアな認証を行う事ができると思います。(SSLとか使用して・・・)

◎質問者からの返答

すいません 開発言語はPerlでした。


2 ● kazu064064
●15ポイント

説明を読む限りではファイルの読み書きが出来ればOKっぽいけど、違うのかな?

入力されたIDを元に

「入力されたID.prf」ファイルを開く

ファイルが存在しなかったらエラー処理

開けて中身と入力されたパスワードを比較

違ってたらエラー処理

この2点が突破できたもの=正しい入力

って処理でいいと思う。

違ったらスマソ

◎質問者からの返答

これでいいのでしょうか?

ID.prfの中にパスワードの他にメールアドレス等が入っています。

#### 定数値設定 #####

$SCRIPT_NAME = $ENV{’SCRIPT_NAME’};

$SCRIPT_NAME =~ s/.*¥///;

$MEMBER_PATH = ”./members/”;#id.prfが入っているフォルダです。

##### ユーザ名・パスワードチェック #####

# POSTされたデータを取得(アカウント情報部分)

$id = $POST{’id’};

$input_passwd = $POST{’pw’};

if (open FH, $MEMBER_PATH.”$id.prf”) {

$pw = split(/¥x01/, <FH>);

$pw = $tmp[2]

close FH;

if ($input_passwd ne $pw) {

# パスワードが違ったのでエラー表示

# 終了

die ”パスワードが違います。”;

}

} else {

die ”ユーザIDが違います”;

}

宜しくお願いいたします。


3 ● COFFEEBREAK
●15ポイント

http://www.net-easy.com/psw/ezpsw.html

このCGIが、パスワードをファイルに保存してパスワード管理をしているようですので、ソースを見れば参考になると思います。

>パスワード、ID、メールアドレスなどを保存する「psw.txt」を


4 ● TrickStar
●15ポイント

http://www.bayashi.net/st/pdmemo/crypt.html

kazu064064さんの回答とmiller31さんがコメントで述べられているように,

基本的にはファイルとの比較でよいと思います.

しかし,なんらかの方法でパスワードが漏れてしまったときのことを考え,

URLで示したcrypt関数を用いて暗号化するのがよいと思われます.

具体的には,ファイルの中に暗号化したパスワードをいれます.

認証の際に,ユーザが入力したパスワードを暗号化してファイルの中身と比較します.

cryptは不可逆暗号なので,ファイルに書かれたパスワードが漏れても,

不正にアクセスできなくなります.


5 ● sasada
●15ポイント

とりあえず、文法的なところで、

誤: $SCRIPT_NAME =~ s/.*¥///; # /が一つ足りない

正: $SCRIPT_NAME =~ s{.*/}();

誤: if (open FH, $MEMBER_PATH.$id.prf”) { # $id.prf が未定義

正: $id.prf = ”ID.prf”;

if (open FH, $MEMBER_PATH.$id.prf”) {

誤: $pw = $tmp[2] # ;がない

正: $pw = $tmp[2];

くらいでしょうか。。


1-5件表示/8件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ