プロが教えるわが家の防犯対策術!

PHP歴1年、MySQL歴3ヶ月程度の職業プログラマなのですが、今回会員専用ページを作ることになり認証について勉強しています。
Basic認証より安全で「一般的な」認証方法は何でしょうか?

希望として、
・Basic認証のようなポップアップウインドウは出したくない。
 (教えてgooログインのような感じが理想)
・パスワードの送信は暗号化したい。
・できればログアウトもしたい。
といった感じです。

環境は以下の通りです。
・ファーストサーバー(レンタル)
・PHP5.2.6(Apache DSO) MySQL4.0.24 Linux 2.4.30
・PEAR/シェル不可 

1人でやっているため何が常識なのかわかりません。
お詳しい方、よろしくお願いいたします。

A 回答 (3件)

当方がログインを作成する場合は、大抵以下のような作成とします。



1)ログイン画面や会員の画面はできるだけSSLの画面とする
2)ユーザーのパスワードを格納する場合はcrypt等で暗号化してDBやファイルに格納する
3)ログインフォーム(自作のフォーム画面)で入力されたIDとパスワードをチェックしてOKならば、セッションに認証済みの情報を持たせ、あとは、認証用のセッションが認証済みなら、ログイン済みとして各画面の制御をする。

大抵は上記のような感じで作成します。
以上、参考までに。

この回答への補足

ありがとうございます。
仮にSSLを使わないと仮定すると、3)でユーザーがサーバーにパスワードを送信する際に盗聴されてしまうのではないかと思いますがそういう心配はないでしょうか?それともSSLは必須でしょうか。
よろしくお願いいたします。

補足日時:2008/06/06 16:12
    • good
    • 0

ANo.1です。



>仮にSSLを使わないと仮定すると、3)でユーザーがサーバーに
>パスワードを送信する際に盗聴されてしまうのではないかと思いま
>すがそういう心配はないでしょうか?それともSSLは必須でしょ
>うか。

 漏洩しては困るデータを画面上で扱う場合はSSLの方がより安全ですので、SSLにした方がよいと思います。

 ちなみに、漏洩しては困るデータとは、ID・パスワード以外にも、画面上に表示される個人情報なども同等ですから、ログイン画面だけ注意すればよい、という事にはならないと思います。
 BASIC認証の場合も、認証後の画面でSSLで無い画面を使用していれば、SSL画面でアクセスしている場合に比べ、漏洩の危険は高いはずです。

この回答への補足

なるほど!
守るものはパスワードだけじゃないんですね。やっぱりSSLは必須のようですね。
ところでセッションに認証済みの情報を持たせるということは、管理すべき全てのページをPHPで動的に作るということでしょうか。
たびたびですがよろしくお願いいたします。

補足日時:2008/06/06 19:31
    • good
    • 0

ANo.1です。



>ところでセッションに認証済みの情報を持たせるということは、
>管理すべき全てのページをPHPで動的に作るということでしょうか。

 「管理する全てのページ」が具体的にどういう範囲かがちょっと判らないのではっきり答えられませんが、たとえば、「ログインしていなければ見る事のできないページ」であれば、この部分はphpで作成しておく必要があります。
 ログインしていなくても見られて構わないページは通常のHTMLでもOKです。

 ただし、携帯サイトなどのクッキーが使えないサイトの場合は、HTMLなどの静的ページからはセッションIDが引き渡せない場合があるので、この場合は全てphpで作成しないと、ログインが途中で切れてしまう場合はあります。

この回答への補足

なるほど。
ここがディレクトリ指定一括処理のbasic認証とは違う部分ですね。
教えてgooもこの方法なんでしょうかね。
今回は勉強になりました。本当にありがとうございました。

補足日時:2008/06/07 00:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!