新しいWebサイトでは一般的ではないようですが、アカウントを必要とする多くのWebサイト(請求書の支払いなど)により、スペースを含むパスワードを作成できません。これは物事をより 覚えるのが難しい にするだけであり、暗号化されたパスワードや(天国では禁止されている)パスワードのスペースに関するデータベースやプログラミングの制限がないことは知っています。では、サイトへのサインアップに関して、スペースバーがそれほど一般的に差別されているのはなぜですか?
Webサイトのパスワードに関しては、膨大な量の stupidities があります。
パスワードは4文字で、数字のみである必要があります。
(パスワードを0001 .. 9999の範囲に制限することで、単純にそれらを数値、プレーンテキストとしてデータベースに保存できます)
パスワードは大文字で始まり、数字で終わる必要があります。
(これを行うことにより、開発者またはマネージャーは、thisが実際にユーザーに安全なパスワードを選択することを強制すると想定しましたが、「パスワードには最低6文字が必要です。少なくとも1つの大文字、小文字、数字が含まれている場合は、魔法のように失敗します)
パスワードに無効な文字
é
が含まれています。
または、
パスワード
y$₯46¥*A'xD<7&฿=ᴙcN&sF5_Ở!d
に無効な文字が含まれています。ラテンアルファベットと数字の文字のみを使用してください。
または、
パスワードに空白文字を含めることはできません。
3つのケースすべてで、開発者はこのようなパスワードが正しく保存されることを保証していました。
最初のケースで、送信時にé
が%C3%A9
に変換されるとどうなりますか?または、データベースがé
を正しく保存しない場合はどうなりますか?
2番目のケースでは、PHP(なぜPHP?)がUnicodeを処理できないのか、またこのようなパスワードを受け取ったときに何かひどいことをした場合はどうしますか?<
文字が問題を引き起こした場合はどうしますか? &
文字がURLの区切り文字として解釈される場合(何らかの理由で、パスワードがPOSTではなくGETを介して送信されていると想定)?'
がデータベースによって解釈されるとどうなると思いますか?何ですか、SQLインジェクションとは何か、どうやってそれを回避するのかわかりませんか?'
が\'
に変換された場合はどうなりますか?
3番目のケースでは、PHP(again?)trims whitespace場合によっては、そうでない場合はどうなりますか?管理者(ユーザーは空白を1つしか表示しないのに対し、ユーザーは3つの連続した空白を設定しているため、プレーンテキストのユーザーパスワードへのアクセスが意外に失われています?
3つのケースすべてで、これらのあいまいさは、テスト、特にユニットテストによって簡単に解決されます。しかし、大量のプロジェクトでは、テストはまったくありません、そしてテストする時間はありません(ただし、後でデバッグする時間は十分あります)。
これは、開発者がスペースを許可した場合の結果、Unicode文字、またはASCII 48..57∪65..90∪97..122(数字、小文字、大文字)、テストが不可能な場合の最も簡単な方法は、それらを禁止することです。
私の意見では、これがスペースを禁止する唯一の理由です。ヤニス・リゾスは、UXに関連する別の理由を述べました。理論的にはもっともらしい理由ですが、実際にはまったく機能しません。UXを実際に気にかけている人々によって作成されたWebサイトは、愚かなパスワード規則を修正していません。代わりに、空白が実際に禁止されているwebsitesは、ほとんどの場合、UXについて聞いたことがない人々によって行われます。便利なものを含むパスワード関連の制限は、最小文字数として、UXの観点からは、文字を禁止することは本当に煩わしいので、これは特に当てはまります。
答えはHistoryです。
これらのすべてを管理する能力が現在よりも少し低く、等しい自動システムが同じものをクラックしようとする能力もやや少なかった。
現在私たちが知っていることと、私たちが今何ができるかということに基づいて、パスワードについて多くの不満がありますが、単純な事実は、私たちはしばしばレガシー思考とレガシーシステムの組み合わせを扱っているということです。
新しいシステムに制限があるべきですかnow?私はそうしないことを望みます-今よりはるかに少ない理由
私見、それは現代のハッシュおよび/またはソルティングを使用してパスワードにスペースを許可しないようにパスワードを保存するサイト/アプリのまったく愚かなことです。しかし、一部のレガシーシステム(これについてはどこかで読みます)は、パスワードをプレーンテキストで渡します-したがって、そこにスペースを許可しないmayは理にかなっています。また、一部のアプリは、受け取ったすべての文字列入力を「ストリップ」する場合があります。したがって、スペースで開始または終了するパスワードは適切ではありません(もちろん、これは不自然なことですが、自分のサイトを思いついたほとんどの人に起こり得ないことを想像できます)。パスワードにスペースを許可することには「悪い」ことは何もありません-ご指摘のとおり、DBはハッシュやプレーンテキストバージョンを許可しません。
実際、私のWindowsの友達のほとんどは、パスワードにスペースを使用できることを知りません。つまり、ティムメドラの回答によれば、サイトの所有者はラマ(それを許して)や、一部の人にはチャンスを与えたくないのでしょう。誤解されている、および/またはスペースが提供できる利点を知らない。