PHP歴1年、MySQL歴3ヶ月程度の職業プログラマなのですが、今回会員専用ページを作ることになり認証について勉強しています。
Basic認証より安全で「一般的な」認証方法は何でしょうか?
希望として、
・Basic認証のようなポップアップウインドウは出したくない。
(教えてgooログインのような感じが理想)
・パスワードの送信は暗号化したい。
・できればログアウトもしたい。
といった感じです。
環境は以下の通りです。
・ファーストサーバー(レンタル)
・PHP5.2.6(Apache DSO) MySQL4.0.24 Linux 2.4.30
・PEAR/シェル不可
1人でやっているため何が常識なのかわかりません。
お詳しい方、よろしくお願いいたします。
No.1
- 回答日時:
当方がログインを作成する場合は、大抵以下のような作成とします。
1)ログイン画面や会員の画面はできるだけSSLの画面とする
2)ユーザーのパスワードを格納する場合はcrypt等で暗号化してDBやファイルに格納する
3)ログインフォーム(自作のフォーム画面)で入力されたIDとパスワードをチェックしてOKならば、セッションに認証済みの情報を持たせ、あとは、認証用のセッションが認証済みなら、ログイン済みとして各画面の制御をする。
大抵は上記のような感じで作成します。
以上、参考までに。
この回答への補足
ありがとうございます。
仮にSSLを使わないと仮定すると、3)でユーザーがサーバーにパスワードを送信する際に盗聴されてしまうのではないかと思いますがそういう心配はないでしょうか?それともSSLは必須でしょうか。
よろしくお願いいたします。
No.2
- 回答日時:
ANo.1です。
>仮にSSLを使わないと仮定すると、3)でユーザーがサーバーに
>パスワードを送信する際に盗聴されてしまうのではないかと思いま
>すがそういう心配はないでしょうか?それともSSLは必須でしょ
>うか。
漏洩しては困るデータを画面上で扱う場合はSSLの方がより安全ですので、SSLにした方がよいと思います。
ちなみに、漏洩しては困るデータとは、ID・パスワード以外にも、画面上に表示される個人情報なども同等ですから、ログイン画面だけ注意すればよい、という事にはならないと思います。
BASIC認証の場合も、認証後の画面でSSLで無い画面を使用していれば、SSL画面でアクセスしている場合に比べ、漏洩の危険は高いはずです。
この回答への補足
なるほど!
守るものはパスワードだけじゃないんですね。やっぱりSSLは必須のようですね。
ところでセッションに認証済みの情報を持たせるということは、管理すべき全てのページをPHPで動的に作るということでしょうか。
たびたびですがよろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
ANo.1です。
>ところでセッションに認証済みの情報を持たせるということは、
>管理すべき全てのページをPHPで動的に作るということでしょうか。
「管理する全てのページ」が具体的にどういう範囲かがちょっと判らないのではっきり答えられませんが、たとえば、「ログインしていなければ見る事のできないページ」であれば、この部分はphpで作成しておく必要があります。
ログインしていなくても見られて構わないページは通常のHTMLでもOKです。
ただし、携帯サイトなどのクッキーが使えないサイトの場合は、HTMLなどの静的ページからはセッションIDが引き渡せない場合があるので、この場合は全てphpで作成しないと、ログインが途中で切れてしまう場合はあります。
この回答への補足
なるほど。
ここがディレクトリ指定一括処理のbasic認証とは違う部分ですね。
教えてgooもこの方法なんでしょうかね。
今回は勉強になりました。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 「掲示板のログイン画面」はPHP~MySQLに「データベース認証のシステム」方式です。 1 2022/09/27 05:00
- 格安スマホ・SIMフリースマホ 楽天カードからのワンタイムパスワードが届かない。 今回カードの本人認証パスワードの変更の為、enav 1 2022/06/17 11:20
- UNIX・Linux Ubuntu on Xorgのログインについて 2 2023/08/10 15:16
- その他(動画サービス) OKWAVE ログインと会員登録 13 2023/04/09 15:40
- Gmail 10年以上使ってるGoogleアカウント (gmail、YouTube)に、久しぶりにパソコンからロ 3 2022/07/03 03:43
- タブレット Linuxパソコンからのログインと表示される 1 2023/04/12 15:58
- 格安スマホ・SIMフリースマホ SMS認証用の電話番号が欲しい 6 2022/06/12 18:21
- その他(Microsoft Office) Office(Windows版,Word/Excel/PowerPoint等)にログインできません 4 2022/07/24 15:18
- サーバー Webサイト構築フリーランスの案件受注について 1 2022/03/27 18:16
- Mac OS Macの指紋認証が使えなくなりました。 macOS Monterey バージョン12.4 Mac s 1 2022/07/18 21:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームを使わずにPOST送信す...
-
PHPで返信メールにチェックボッ...
-
HTMLエスケープすべき場所につ...
-
IFRAME内PHPのセッション変数取...
-
動的にhtmlテーブルを表示
-
リストボックスにテキスト入力...
-
ログイン画面から入って、「戻...
-
phpでの値を受け渡し方法につい...
-
switch()文で値の大小比較
-
「取得先」という表現について
-
【C#】DataGridViewの最大列数...
-
Dosブロンプトでtabを出力したい
-
shシェルスクリプト 空白行の...
-
phpでcookieがうまく保存されない
-
DTOとEntityの差は何ですか。
-
WordでExcelデータを差込...
-
ActiveReportのサブレポート機...
-
DMMの動画を全件取得したのです...
-
wordの差し込み印刷で文字...
-
VBA内でのGetPixelを使用した時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php 入力画面から確認表示画面...
-
ログイン画面から入って、「戻...
-
php history.back()の戻るボタ...
-
POSTで受け渡したものを保存し...
-
フォームを使わずにPOST送信す...
-
VBAで重複チェックの仕方を教え...
-
PHPで値を保持する方法
-
ブラウザバックしてもチェック...
-
IFRAME内PHPのセッション変数取...
-
【Java】投稿完了画面リロード...
-
HTMLエスケープ処理とデーター...
-
cURL関数を使用したphpからのpo...
-
asp.netでのセッションを使用し...
-
「ページネーション」で検索キ...
-
php に関して質問です。 各ユー...
-
閉じるボタン「×」を制御したい
-
PHPで名寄せするには?
-
セッションを使用したページ遷移
-
HTMLエスケープすべき場所につ...
-
GETのメリットについて
おすすめ情報