2012-01-16 5 views
4

私はPHPスクリプトを書いていますが、私はユーザパスワードにスペースを入れるべきかどうか疑問に思っていました。パスワードをハッシュするのにsha1()を使用していますが、パスワードを含むスペースでうまくいくようです。しかし、私は多くの主要なサイトがパスワードにスペースを含むことを許可していないことに気付きました。これに理由があるのですか、それを許可するのは大丈夫ですか?パスワードのスペースを許可する

+0

スペースを拒否する実際のセキュリティ上の理由はありません。この制限は、何十年も前から不十分なシステムの無意味な遺産であり、人々はより記憶に残ったパスフレーズを使用しないようにしています。人々は彼らが望むものを使いましょう。 –

+0

「主要サイト」にはパスワードにスペースを使用できないものはありますか?私はユーザー名にそのような制限を見ましたが、決してパスワードはありません... –

+3

スペースを許すべきです。また、パスフレーズの使用を実際に励ますことを許可するべきです。あなたは[this xkcd](http://xkcd.com/936/)を楽しむことができます。ああ、bcryptまたはscryptを使うか、より良いことに、すべてを行う既存のライブラリを使用してください。 (プレーンsha1はパスワードには不十分であり、ブルートフォースには簡単すぎる) –

答えて

12

は、パスワードに空白を間違いなく許可してください。多くの人々は、というフレーズを使用することを好む。

パスワードの代わりにパスフレーズを許可することに加えて、more secure(これはxkcdリンクに入れた理由の半分の理由を認めます)のため、パスワードを奨励する必要があります。

+1

+1また、スペースは特殊文字と見なされます。これはセキュリティの点で優れています。 –

+4

特殊文字は、通常の文字よりも実質的な利点はありません。彼らは文字空間(可能性/組み合わせの数)を拡張するので、彼らは励まされます。 – MrGlass

4

には絶対に理由がありませんユーザーがパスワードで使用できる文字を制限しています。これまで

1

なぜそうなるのか分かりません。実装に問題がない場合(そうしてはならない場合)、使用可能な文字スペースを1拡張して、それをはるかに難しくします。

1

パスワードに許可されている文字を制限することは、ハッシュメカニズムが毎回同じようにハッシュすることができる限り、無意味です。たとえば、PHPでパスワードをハッシュしてJavaでチェックしようとするような、異なる文字エンコーディングを使用するシステムからパスワードチェックを行う場合は、マルチバイト文字をハッシュしたくないかもしれません。

関連する問題