新規ユーザー サインアップのテキスト フィールドで使用できる一般的な文字は何ですか? www 規格はありますか?許可されているユーザー名とパスワードの文字タイプに特に関心があります。
10 に答える
パスワードの文字を制限しないでください。使用できる文字数が多いほど、パスワードの安全性が高まります。たとえば、パスワードでスペースを禁止する正当な理由はありません。
ユーザー名については、表示される場所によって異なります。ユーザーに独自のプロファイル URL を提供する予定がある場合は、そうでない場合よりもはるかに多くの文字数を制限する必要があります。
ユーザー入力を再度出力するときは、忘れずにエスケープしてください。
英字、数字、および特殊文字を使用してパスワードを作成できるようにしたいと考えています。サイトが特殊文字、特に !@$* の使用を拒否するのは本当に嫌です。
どのキャラクターも否定しなければならない理由は何ですか? null 文字を除いて、すべてを許可する必要があります。クロスサイト スクリプティングの問題を回避するために、サイトにユーザー名を印刷するときにユーザー名をエンコードする必要がありますが、安全のために「危険な」文字をフィルター処理している場合でも、エンコードする必要があります。特にパスワードにすべての文字を許可すると、ユーザビリティ (およびパスワードの場合はセキュリティ) が大幅に向上します。また、一部のユーザーは、名前にアクセントがある場合 (または中国語やロシア語などの非ラテン文字を使用している場合)、UTF8 文字を入力したい場合があることに注意してください。
文字を制限する場合、それはセキュリティのためであってはなりません(たとえば、引用符を防いで人々が SQL を挿入できないようにするなど)。コードは、入力文字列内の任意の文字を処理できる必要があります。文字がどこかに送信されるたびに適切にエスケープする必要があります。しかし、ビジネス上の理由やその他の実用的な理由 (例: Zach の URL の例) でそれらを制限しても問題ありません。
あなたのアプリケーションは、英語以外のユーザーによって使用されますか?
最低限、á à é è のようなヨーロッパ文字は許可します。
もちろん、真に国際化する必要がある場合は、中国語やアラビア語などの言語のすべての文字を許可する必要があります。
誰かを怒らせたくない場合は、許可された文字のリストを実際に作成することはできないように思えます。
セキュリティ上の目的でこれを行う場合は、前もってフィルタリングするのではなく、文字列を使用する前に必要な文字をエスケープすることをお勧めします。
- パスワード フィールドでは任意の文字を使用できる必要があります (とにかくハッシュするだけですよね?)
- テキスト フィールドは、特定の文字 ([A-Za-z] など) に限定しないでください。そうしないと、アクセント文字を使用する必要がある (または使用したい) 人を禁止することになります。データベース/処理側から、エスケープするかバインディングを使用してデータを保存します。
- 特定の文字セットしか受け入れられないことがわかっている特定のフィールドがある場合(JW が言及したビジネス上の理由など)。たとえば、米国のみの対象者向けのフォームは、数字と郵便番号のダッシュに制限される場合があります。
O'Briens、O'Malleys、O'Reillys、およびその他のアポストロフィ付きの名前にはすべてアポストロフィを使用してください。
あまりにも他の人が言ったことに追加します: パスワード: ありとあらゆるもの、しかしそれらをハッシュ化します (もちろん)
ユーザー名: すべて、場合によってはスペースを除く... または複数のスペース (つまり、単一のスペースは問題ありません。複数のスペース = 1 つのスペース)
パスワードは、最低限、ターゲット ロケールでキーボードから使用できるすべての文字を許可する必要があります。
何も制限しないでください。ユーザーに独自の URL を与えたい場合は、数値 ID を使用するか、ユーザーに URL の名前を作成するように依頼してください。ユーザーのユーザー名を表示したり、表示名 (危険な Unicode 文字以外のものに限定する必要があります) を表示したり、サインアップ後に要求したりしないでください。