質問

ログインシステムでの作業-顧客がサイトアクセス用のパスワードを選択するポイント。

RegExを使用してパスワードが十分に強いことを確認する以外に、通常、システムではデータベースに蓄積されるすべてのデータが注入などに対してチェックされ、合理的に制限された文字セットがすべてのフィールドに適用されます。パスワードに特に制限の多い文字セットは必要ありません。あまりにも多くのパスワードを制御することは、セキュリティ上のアンチパターンのようなものだと思います。

ただし、パスワードの場合は、とにかく挿入のためにソルトSHA-512でハッシュ化して、いくつかの質問を投げかけます。

  • 顧客がパスワードで使用できる文字セットを制限する点はありますか?つまり、ハッシュによって完全に回避されると想定している注入以外の脆弱性にさらされていますか?

  • すべてを許可するアプローチには否定的である必要があります-将来、無害な組み合わせが現在危険な組み合わせになる可能性があるという事実を考えることができます-それは本当の懸念であり、他にもあります私は逃したかもしれませんか?

  • 拒否する必要のある文字/文字列はありますか?とにかくネイティブASP.NET保護を通過しますか?

  • もう少し主観的かもしれませんが、SHA-512ハッシュの場合、ユーザーが(合理的なパラメーター内で)選択できるパスワードの最大長を制限する点はありますか?サイズ/複雑さにより、設定することを確認する警告が表示される場合があります。

ご協力ありがとうございます。

編集:これは、ADO.NET(LINQ / EFではない)を使用してMSSQL2008データベースにアクセスするASP.NET Webアプリケーションです。

役に立ちましたか?

解決

実際にパスワードをプレーンテキスト(Danger、Will Robertson、Danger!)でデータベースに挿入している場合を除き、SQL挿入攻撃を心配する理由はほとんどありません。問題。 [a-zA-Z0-9]といくつかの特殊文字のセットを許可する必要があります。制限する唯一の文字は「<!> lt;」です。 ASP.net検証警告がトリガーされます。クライアント側でパスワードの複雑さをチェックするための楽しいツールがたくさんあります。 これが好きです。入力中に、ユーザーにいくつかのインスタントフィードバックを提供します。

他のヒント

英語以外の観点から-パスワードに制限はありません。

たとえば、なぜ日本語話者にUS-ASCII文字セットの使用を制限するのですか?そして、なぜフランス語を話す人はアクセント文字を使わないのですか?

ハッシュが正しく永続化されることを考えると、それを制限する技術的な理由はありません。

パスワードはハッシュ化されるため、16進数形式でデータベースに保存されます。したがって、許可される文字の種類を制限する意味はありません。パスワードに漢字を使用したい場合は、使用できるはずです。ランダムなバイトを生成し、それらをパスワードに使用するFirefoxの拡張機能をインストールした場合、それを実行できるはずです。ここでの教訓は、ユーザーのパスワードを制限しないことです。

RegExには、ユーザーが任意の言語の文字を使用したかどうかを検出できるUnicodeサポートがあります。これは、パスワードの強度を検証するときに便利になる場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top