web-dev-qa-db-ja.com

ユーザー名の形式を制限するのはなぜですか?

多くのウェブサイトでは、新しい「ユーザー名」を作成するように求められると、何らかの方法で制限されます。多くの場合、「ユーザー名には文字とアンダースコアのみを含める」などの制限があります。

これにより、自分の電子メールをユーザー名として使用できなくなり、常に新しい一意の文字列を考え出す必要があります。

この背後にある根拠は何ですか?
覚えやすいシンプルで常にユニークなものとして、ユーザーにメールを使用させるだけではないのですか?
ユーザー名の一部として*&%$#@のような記号を使用することの一般的な問題は何ですか?

13
Igor Romanov

ユーザー名の形式を制限する正当な理由はたくさんあります。

  1. 一意性。複数の文字セットを許可すると、まったく同じに見えるが技術的に異なる名前になる可能性があります。たとえば、多くのキリル文字の文字はラテン文字とまったく同じに見えますが、実際には異なります。 「Нarry」と「Harry」は同じに見えても、同じ言葉ではありません。最初の "Н"はキリル文字で、2番目の "Н"はラテン語です。

  2. 乱用。ほとんどのユーザーにとって乱用または不快と見なされる可能性のある単語または語句を制限することは一般的です。これには、悪態やヘイトスピーチが含まれる場合があります。

  3. 読みやすさ。正しいルールがない場合、「73d37sl29」や「zzzzzzzzzzzzz」などの簡単な名前になってしまう可能性があります。 「73d37s129」または「zzzzzzzzzzzzzz」である可能性のある他の名前を参照するか、または比較します(わずかに異なることに注意してください)。

  4. セキュリティ。システムを危険にさらす可能性のあるコードを含むユーザー名自体を防ぐ必要があります。これを行う最も簡単な方法は、プログラミング言語で特別な意味を持つ文字を除外することです。ほとんどの特殊文字(例:!@#$%^&*()〜 `; :)にはすでにいくつかの意味があるため、すべての文字を回避するのが最も安全です。 enter image description here

15
JohnGB

許可された文字のホワイトリストを作成する方が、文字列の処理が不十分なためコードインジェクションなどの問題を引き起こす可能性があるすべての文字のブラックリストを作成するよりも簡単です。

4
paulwal222