ユーザーは「12345」や「12345」などのパスワードを入力できる必要がありますか?最初または最後のスペースですか?または、入力ミスの可能性があるため、パスワードを削除して先頭または末尾のスペースを削除しますか。
はい、そうすべきです。
いいえ、トリミングしないでください。
話をさせてください。
Eコマースサイトでアカウントを作成する必要があったので、ランダムパスワードジェネレータを実行して8文字の大文字/小文字/数字/句読点のパスワードを作成し、2回貼り付けて確認し、すべての個人情報の登録を完了しました。後で使用するために、ランダムパスワードをローカルのPGP暗号化ファイルに保存しました。
後でログインしようとしましたが、パスワードをもう一度貼り付けることができませんでした。少しテストした後、サイトが元のパスワードからすべての句読点を削除し、誤った方法でサニタイズを試みたところ、パスワードが3つの簡単に無理矢理文字に減っていたことがわかりました。
ユーザーのパスワードをトリミングまたはサニタイズしないでください。
「入力ミス」を説明するためだけにパスワードを「クリーンアップ」しないでください。これはユーザーを混乱させ、場合によってはユーザーがログインできなくなるでしょう。実際、ユーザーの背後でパスワードを変更しないでください...パスワードが無効であることを常に警告し、新しいパスワードを試してもらいます。
私が最近遭遇した良い例は、3Comスイッチでした。 Webインターフェイスでは、管理者パスワードを変更できましたが、パスワードが8文字に制限されていることを警告しませんでした。 8文字を超えるパスワードを入力しました。変更後にログインしようとすると、パスワードが拒否されただけです。ただし、最初の8文字だけを使用した場合は、ログインできました(試行錯誤で、面白くありませんでした)。
最近のパスワードは、以前のようには見えません。たとえば、私のパスワードは次のようになります。
Man, this program is really ticking me off!
とにかく、確認フィールドでパスワードを検証する必要があります。彼らがタイプミスを2回行った場合は、パスワードを忘れたか、リセット機能が設定されていることを願っています。
プレーンテキストで保存するべきではないので、スペースは重要ではありません。
あなたがそのような決定をする瞬間は、あなたがマイクロマネジメントの道を歩み始めた瞬間です(この場合はあなたのユーザーの上に)。
スペースを含むパスワードはシステムを破壊しますか?それともセキュリティリスクですか?その後、心配しないでください。たとえそれが彼らが欲求不満にならなければならないことを意味するとしても、あなたのユーザーに彼ら自身のエラーに対処させてください。彼らのタイプミスは決してあなたの問題ではありません。
コンピューターのディスプレイがすでに大画面に表示された後、誰かがデモのために自分のアカウントにログインし、パスワードフィールドにフォーカスを正しく変更しなかったため、パスワードが次のように公開された会議に何度も参加しました。聴衆全体。
他の人の前に資格情報を入力する必要があるかもしれない人は、万が一の場合に備えて、パスワードの末尾に1つまたは3つのスペースを残すことを検討する必要があります。また、認証システムを構築するときは、決してこれらのスペースを削除する必要があります。
私は気にしません。パスワードが設定されているときにパスワードに対して行うことは、後で入力するときにもパスワードに対して行われる限りです。トリミング、切り捨て、大文字と小文字の変更、ソルト、ハッシュなど、一貫して実行してください。
とにかく実際のパスワードを保存していないので、...
スペースは通常のパスワード文字であり、削除しないでください。
パスワードをデータベースに保存する前にハッシュする可能性があるため、スペースは他の文字と同じように扱われます。
パスワードをテキストとして保存するのは悪いことなので、パスワードはすぐにハッシュされるので、パスワードをtrim()する必要はありません。
...同様の注意点として、パスワードはハッシュ化され、データベースにプレーンテキストとして挿入されないため、SQLインジェクションのために正規表現で検証する必要はないと信じていますか?
私は投票しています:いいえ、彼らはすべきではありません:
許可しないユーザーがパスワードの最初と最後にスペースを使用することには大きな利点があります。それは、ユーザーがパスワードをコピーして貼り付けるときによく発生する問題を排除することです(メールなどから)。また、パスワードの一部ではない空白が含まれています。
その後、ユーザーはイライラし、システムが壊れていると考え、サポートに連絡します。開発者はすぐにプロジェクトに引き込まれ、「バグのある」ログインプロセスをチェックし、問題に気付くまで1日かけて髪の毛を抜くだけです。
パスワードを作成するときにこのポリシーを適用すると、作成するよりも多くの問題が解決されると思います。
すでに述べたように、パスワードにパスワードを含めることは問題ありませんが、新しいランダムパスワードを生成するとき(たとえば、賢明なリセットパスワード紛失システムの場合)、そのようなトリッキーな文字を含むパスワードを生成しないようにする必要があります。
パスワードが十分に長くランダムである場合、これはいくつかのトリッキーな文字の制限を補い、エンドユーザーの生活をかなり楽にします...