2

私は ASP.NET、C#、および MS SQL を使用しています。ユーザーが複雑なルールを作成できるルール ビルダー ページを作成しました。このページは SQL 呼び出しの「Where」句の後に続くものを作成しますが、ルール ページはサブクエリ、操作の順序、またはその他の非常に複雑な句を作成できません。

上級ユーザーがこのステートメントを編集できるオプションを提供したいと考えていますが、悪意のあるコードを実行できる SQL インジェクション攻撃を阻止したいと考えています。彼らが 1=1 を置きたいかどうかは気にしません。彼らが更新/削除/ストアド プロシージャなどを呼び出すためにブレイクアウトしようとすることを本当に気にかけています。

以下は、ルール ジェネレーターがドロップダウン メニューを使用して構築しない、ユーザーが入力する高度なクエリの例です。

Where Org in (Select Org from AnotherTable Where Manager in (1,2,3)) AND ((Person= 4 OR Level = 5) AND Entity between 5 and 10 or Entity = 15)

誰かが考えることができる、そこにある、または無料の何かはありますか? これを可能にするクールなルール ビルダーを 1 つ見たことがありますが、2000 ドルを超えています。

4

1 に答える 1

2

本当にクエリをサニタイズする必要がありますか?それとも、アクセス許可が制限されたユーザーとしてクエリを実行して、内部テーブルにアクセスしたり、変更操作を実行したりできないようにすることはできますか? 任意に複雑な SELECT クエリのみを許可する場合は、権限を調整するだけで十分な場合があります。ただし、環境によっては、「SELECT * FROM ReallyBigTable」の繰り返しなど、他のタイプの攻撃を DOS タイプの攻撃として考慮する必要がある場合があります。

于 2013-04-27T00:33:03.537 に答える