Webログイン/認証のベストプラクティスは?質問する

Webログイン/認証のベストプラクティスは?質問する

ウェブサイトのユーザー認証部分(アカウント登録、ログイン、パスワードリセットなど)のコードを書くのは非常に簡単ですが、本当に良いユーザー認証の設定はどうでしょうか? たとえば、プレーンテキストのパスワードを保存しないことは、Web サイトの最低限の要件であると考えますが、このアドバイスは主に口コミで伝わっているようで、多くのサイトがまだそれに従えていません。

Web サイトのユーザー認証部分に関する他の良いアドバイスや適切な要件は何ですか? たとえば、ユーザー名はユーザーが選択する必要がありますか、それとも電子メール アドレスにする必要がありますか? ユーザー登録部分に落とし穴はありますか? (CAPTCHA はおそらくそれ自体で 1 つのトピックに値するでしょう)。パスワード リセット部分に落とし穴はありますか? 他に何かありますか?

編集:

ここで多少重複しています:ログインページのベストプラクティス

ベストアンサー1

暗号化

昨日これについて質問がありました - "そもそも、なぜパスワードのハッシュ化を気にする必要があるのでしょうか?「これを実行すべき理由がすべて網羅されています。」

キャプチャ

私は、Ricardo の captcha の点には同意しません。常に captcha を要求してください。非常に人気のないサイトでもスパマーの標的になります。私は、他のどこからもリンクしていないコードをテストするために立ち上げたブログをいくつか持っていますが、奇跡的にスパマーがそれを見つけました。スパマーがバイアグラに関する無数の同じ投稿でサイトを圧倒したとき、captcha をインストールするために 20 分余分にかけなかったことを後悔するでしょう。再キャプチャいくつかあるプラグインインストールが非常に簡単になり、本のデジタル化を手伝うことができます。

視覚障害のあるユーザーには音声キャプチャが必要になることを忘れないでください。

パスワードをお忘れですか

ユーザーのメール アドレスを確認したら、ランダムな新しいパスワードを生成することができます。ただし、ランダムに生成されたパスワードはすぐに忘れてしまうため、ユーザーにパスワードをすぐに変更するよう促すようにしてください。

メール

すべての可能性のある電子メール アドレスをカバーする複雑な正規表現を実装しようとする必要はありません。@ の簡単なチェックを行い、確認のために電子メール アドレスに送信されたリンクをユーザーがクリックできるようにします。これは最近では一般的な方法ですが、いまだに「巧妙に」しようとしている人に遭遇します。

フォーム検証

登録フォームでのサーバー側検証だけでなく、AJAX 形式のクライアント側検証も用意し、ユーザーがフォームに入力する際に​​、選択したユーザー名が使用されているかどうか、パスワードが受け入れられるかどうかなどをユーザーに知らせる必要があります。登録フォームを何度も再送信しなければならないと、ユーザーはイライラしてしまう可能性があります。

認証自体

特にしばらくサイトにアクセスしていない場合は、ユーザー名よりもメールアドレスの方が覚えやすいため、ユーザー名またはメールアドレスのいずれかでログインできるようにすると便利です。

サイトにさらなるセキュリティが必要な場合 (たとえば、商品を販売していて、ログインするだけで入手できる場合)、別の情報を要求します。郵便番号を尋ねるのは良いアイデアです。入力に数秒余計にかかるだけで、パスワードの総当たり攻撃がかなり難しくなります。

おすすめ記事