C# 正規表現を使用して、Web 入力で許可されている文字のホワイトリストを実装する際に、いくつかの問題に遭遇しました。SQL インジェクションと XSS 攻撃を回避しようとしています。許可された文字のホワイトリストが進むべき道であることを読みました。
入力は人名と会社名です。
問題のいくつかは次のとおりです。
アンパサンドを含む会社名。「ジム&サンズ」みたいな。アンパサンドは重要ですが、危険です。
名前に Unicode 文字を使用 (たとえば、アジアの顧客がいます)。文字セットを使用して名前を入力します。これらすべてをホワイトリストに登録する必要があります。
- 会社名には、「S/A」や「S\A」など、あらゆる種類のスラッシュを含めることができます。それらは危険ですか?
DB に既にある (そして新しいユーザーによって入力されている) すべてのデータを確認した後、ほぼすべての文字を許可したいと思っています。
これら (およびその他) の問題を処理する適切なホワイトリストに関する提案はありますか?
注: これはレガシー システムであるため、すべてのコードを制御することはできません。そもそも不正なデータがシステムに侵入するのを防ぐことで、攻撃の数を減らしたいと考えていました。