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