2011-08-11 17 views
1

ユーザ名の正規表現フィルタは何ですか? [A-Za-z0-9 ]大丈夫ですか、あまりに柔軟性がありませんか?他に何を探すべきですか?国連の罰金ですURLにあるユーザ名のサニタイズ方法

+0

これも表示されるため、作成したくありません他のユーザーに偽装するのは簡単です(末尾にスペースがあります) – Timmy

答えて

2

(?空白をトリミング)、しかし、あなたは彼らが-_%@.を使うようにしたいかもしれません。 (基本的に[a-zA-Z0-9._%+-])。多くの人がユーザー名の電子メールを使いたいと思うし、その99%をカバーしています。低いセキュリティ状況では、私はlet'emと言う。

+0

アンダースコアはどうですか? –

+0

@machineもともと私は '\ w'を提案していましたが、何らかの理由でそれを削除しました。私はそれを – cwallenpoole

3

ちょうどencode URLで使用しているユーザー名。

+0

に追加しました...そして何でも許可します。私はDrupalがユーザー名の任意の文字を許可する方法が好きです。私はDjangoがスペースを許さない方法が好きではありません。私は考えることができる正当な理由がないからです(私は実際に見ていないと告白しますが)。 –

1

オリジナルの回答に対するあなたのコメントは、ここでは本当の「問題」です。ユーザー名をbase64などでエンコードするのは簡単ですが、ユーザーが任意のユニコードユーザー名を選択できるようにすると、簡単に他のユーザーを模倣することができます。

基本的な考え方は、ユニコードには同じように見える一方で多くの文字が異なってエンコードされているということです。 homograph attacksの詳細については、こちらをご覧ください。これを賢明に扱うライブラリがあるかどうかは考えられませんが、単純な正規表現のソリューションが必要な場合は、限られた文字範囲に固執する必要があります。

+0

ありがとう、それは正しいです、多分私は範囲に固執します。 – Timmy

関連する問題