web-dev-qa-db-ja.com

6文字以上のすべてのパスワードを許可します。いい練習?

私はファイル共有およびホスティングサービスを開発していますが、現在のところ、パスワードは6文字以上でなければならないという以外の要件を設定していません。すべての文字も受け入れます。

ユーザーが自分のパスワードを自由に作成できるようにする必要があると思います。しかし、それが許されるべき悪いことであるなら、私は知りません。

私はわからない最も明白な悪いことを拒否するそれほど厳密ではない要件を追加する必要があるかどうか次のようなパスワード

  • ''
  • 「123456」
  • '!@#$%^'
  • 'パスワード'

UXに関しては、ユーザーにパスワードを自由に与えることは本当に良いことです。しかし、弱いパスワードを使用するユーザーの大部分で強度が損なわれます。 Dropbox もこのアプローチを使用します。そして、実際に実施されていない場合、強度メーターは役に立たないと思います。

これは良い習慣と見なされますか、それとも別の方法で行う必要がありますか?

注:ブルートフォース攻撃に対抗するサーバーセキュリティ測定も行います。

[〜#〜]編集[〜#〜]

質問オーバーフローがコメントで言ったように:

明らかに悪質なパスワードが多すぎて実装するのが現実的ではなく、すぐにサインアップしたいユーザーを困らせるかもしれません。

それに同意するので、私が上記で検討したそれほど厳格でない要件を実装することはないと思います。

12
Kid Diamond

私はあなたがこれを見たと確信しています:

xkcd comic "Password Strength"

ソース: http://xkcd.com/936/

つまり、セキュリティ要件として、長さだけで十分です。

13

これは少し自己プラグインですが、同時に、これは私が非常に気にかけているユーザー体験の一部です。

XKCDアプローチを採用する場合、複雑なパスワードを使用したユーザーに報酬を与え、より複雑なパスワードを使用するようにユーザーを教育する必要があります。複雑さについて話すときは、具体的には攻撃の背後にある計算の複雑さを意味するため、「correcthorsebatterystaple」は「Tr0ub4dor&3」よりも複雑です。

最終的には、パスワードハッシュデータベースが使用された場合にユーザーのパスワードがクラックされないように保護しようとしています。そのため、通常のハッシュとソルティングの考慮事項に加えて、人間の直感的な観点ではなく、計算の観点から複雑なパスワードを適用する必要があります。複雑。

これを行うjQueryプラグイン Complexify を開発しました。基本的な考え方は、パスワードを総当たりするために必要な文字セットを調べ、それらのサイズを調べ、テストされているパスワードの長さでの可能なパスワードの数を計算することです。これは、「Tr0ub4dor&3」のスコアが40%でチェックに失敗したことを意味しますが、「correcthorsebatterystaple」のスコアは68%で合格します。スコアリングの場合、100%マークは大文字、小文字、句読点、数字を含む約28文字のパスワードに配置されます。

キーを押すたびに更新される「進行状況バー」をユーザーに表示することで、さまざまな文字がパスワードに与える影響を確認でき、複雑さのほとんどはパスワードの長さの延長に起因することがわかります。

このアプローチをお勧めします。私のオリジナルはjQueryプラグインですが、Node.jsバージョンとObjective-Cバージョンもあります。それは比較的単純なコードであるため、適切でない場合でも、他のほとんどの言語で実装するのに1時間もかかりません。

4
danpalmer

私はすべてのパスワードのメモリ負担に飽き飽きし、パスワードロッカー(特にKeyPassX(特に優れていませんが、十分ではありません))を使い始めました。

私はランダムパスワード生成機能を使用しているため、使用するパスワードの多くを文字通り見たり入力したりすることはまったくありません。

私がぶつかるUXの問題は、「強さに関する恣意的なルールに従わなかったため、パスワードを拒否すること」です。 「8〜15文字」という制限は、私が好むよりも短いパスワードを使用するように強いるため、最も苛立たしい制限です。

だから私のパスワードを制限しないでください。私のセキュリティ上の懸念を推測することはできません。私がpasswordを使用したい場合、あなたのサイトは私により良い実践を教えることができません。覚えにくいパスワードを使用する必要があることを教えてくれるので、書き留めるか忘れてしまいます。忘れてしまえば、欲求不満でサイトに戻れないかもしれません。

すべてのセキュリティ上の懸念事項と同様に、保護する脅威を決定する必要があります。

1
msw

私の意見では、これはユーザーに多くの自由を与えますが、最も頻繁で明白なパスワードを使用する攻撃にユーザーをさらすことがないので、良い方法だと思います。

また、生年月日、電話番号などのパスワードを検出しようとすることもできますが、これらの種類のパスワードについては、単に警告を表示する必要があります(非常に良いパスワードではない場合でも、ユーザーが他のパスワードを選択する可能性があるため)制限しすぎるとさらに悪化する可能性があります。

0
Trevör