• 締切済み

URLクリックによる認証について

http://●●●/xxx.php?username=abcde というURLをクリックします。 ('abcde'はユーザがサイトにログインする時のIDです。) すると、xxx.php内で認証処理を行い、 IDが正しければ認証済の画面を表示させることは可能でしょうか。 (勿論パスワードはIDから取得できます) DBはMySQL、DB処理部分はPEARのAUTHを使っています。 GOOGLE検索等で調べたのですが、 載ってるのはフォーム上でのログイン認証についてでした。 以上、よろしくお願いいたします。

みんなの回答

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.3

>> 代替案のアドバイス、ぜひお願いします。 > 結局、このURLにアクセスした後に、4桁の数字とか簡単なパスワード入力させたわけですが^^; ↑が 代替案だったのですが。。 > http://●●●/xxx.php?username=abcde この「abcde」に、IDとパスワードを含める意図が分かりません。 永久に同じ「abcde」を使い続けるのであれば、 IDとパスワードと一緒に「abcde」を発行してやればいいだけのことだと思います。 永久に同じ「abcde」を使い続けるというのは、セキュリティ上、お勧めできるものではありません。 自分がやったのは、32桁の大文字小文字英数字で、これと同じようなURLにしたうえで、 このURLにアクセス後に4桁のパスワードを入力させ、 そのパスワードの入力を一日に規定回数以上間違えた場合、乱数文字列を再発行し、 登録されてあるメールアドレスに送信する。と言うものです。

chibibichi
質問者

お礼

なるほど。 質問の件ですが、なんとか自己解決しました。 IDとパスをフォームの初期値に入れて body部分にonLoadを加えることで フォームを自動submitさせることによりできました。 ご回答、ありがとうございました。

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.2

んーーーーーー、 登録確認用のURLのものは、アレは その時だけ一回こっきりの使い捨ての乱数文字列です。 大抵、何時間かの制限時間があり、それを超えると使えなくなる物です。 常に使うログイン用のURLとして、 > http://●●●/xxx.php?username=abcde こんな感じでやるとしたら、いずれ誰か 他の人が このIDを使ってログインしてしまう可能性が考えられます。 桁数を増やしても、制限時間がない限りは いずれ、これだけだと その気になれば、破られます。 破るも何も、時間さえかければ 総当りで 何とかなってしまいます。 何となく見当違いな回答をしてしまっている気がするので、ここらで やめときますが、 これに似たようなことはやった事がありますので、代替案ならアドバイスもできます。 結局、このURLにアクセスした後に、4桁の数字とか簡単なパスワード入力させたわけですが^^;

chibibichi
質問者

補足

代替案のアドバイス、ぜひお願いします。 テンプレはSMARTYを用いておりまして、 ログインフォーム画面は下記のようになってます。 <form method="post" action="{$PHP_SELF}"> ID {$form.username.html} PASS {$form.password.html} {$form.submit.html} </form> 例えば、xxx.phpにアクセスすると、 上記フォーム(実際には存在しない)が 内部的にSUBMITされるようにはできますでしょうか。

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

んー、これは よくある登録確認のメールとかについてくるURLみたいな奴のことを言ってるという事でしょうか? フォームからメールアドレスとか入力して送信すると、 そのメールアドレスにURLがついたメールが送られてきて「このURLをクリックする事で登録完了となります。」みたいなの。 > (勿論パスワードはIDから取得できます) IDにパスワードも 暗号化でもして埋め込まれていると言うことでしょうか?

chibibichi
質問者

補足

ご回答ありがとうございます。 まさにそれです。 パスワードは仮登録段階でDBに入ってますので IDをもとにDBから取得できます。

関連するQ&A