2009-06-01 6 views
1

さまざまなデータベースシステムのデータベースクエリーへのユーザー入力のエスケープをサポートする.Netプロジェクト/ dllがありますか?SQLクエリーのエスケープ - .Netのさまざまなデータベースプラットフォームのサポート

チーム全体を標準化して1つのモジュールを使用して、ユーザー指定の入力をエスケープして、パラメータ化されたSQLクエリで使用することを希望します。

設定ファイルにデータベースシステム(oracle、SqlServer、mySqlなど)を指定し、Escape(variableName)を呼び出すことができ、現在のデータベース設定に基づいて文字列の内容をエスケープするのが理想的ですweb.configファイルに保存します。

ない場合は、次善の策は、プロジェクトでは、Oracle、のSQLServerとMySQLをサポートしなければならない最低限などEscapeForOracle、EscapeForSqlServer、のようなもの

だろう。

これを社内で作成する必要があるのか​​、これを行うために既存の商用/オープンソース製品が存在するかどうかは疑問です。

+0

「パラメータ化されたSQLクエリ」と言って、エスケープすると言います。あなたはそれが何を意味するか分かりません。 達成したい具体例をいくつか挙げてください。私は、あなたが宅内開発のルートを下りたい場合に使用できる開始コードを持っているかもしれません。 –

+0

Lasseが正しいです - すべてのユーザ提供データにパラメータを使用すると(SP内に動的SQLを構築しない場合)、エスケープする必要はありません。 –

+0

私はESAPI(http://code.google.com/p/owasp-esapi-dotnet/)のような何かをするプロジェクトを見つけたようです。残念ながら、現時点では、SqlServerではなくOracleとMySqlのみがサポートされています。 詳細情報はhttp://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet#Defense_Option_3:_Escaping_all_User_Supplied_Input ですが、私は同意します - パラメータ化されたクエリを使用する場合、このようなものは必要ないはずです。 詳細情報:http://www.owasp.org/index.php/ESAPI –

答えて

2

私はあなたがそのようなことを必要とは思わない。

パラメータ化されたクエリ/ストアドプロシージャを実行する場合は、パラメータコレクションを使用します。
適切なデータ型、長さ、精度を指定してください。&は有効な値を指定します。
エスケープはDBプロバイダによって行われます。

あなたの質問を正しく理解していない場合は、教えてください。

0

.NETでは、SqlConnectionの代わりにDbReaderやDbConnectionなどの汎用クラスを使用できます。 shahkalpeshやLasse V. Karlsenのように、パラメータを使うことができ、フレームワークやドライバがエスケープ処理を行います。

しかし実際には、OracleとSQL Serverの両方の製品を開発する場合は、かなりのオーバーヘッドがあります。正確にエスケープするのはちょうど氷山の一角です。 OracleとSql Serverのテストサーバーをインストールしていない場合は、おそらく起動していない可能性があります。

+0

私は彼の質問に私のコメントからも意味したことだったので、彼は彼が望むものをより明確に指定する必要があります。データベースエンジン間で同じように動作する一連のSQL文を使用して1つの製品を作成することについて話している場合、彼はその違いを処理するいくつかのコードを必要とします。しかし、「パラメータ値」が本当にパラメータではない「パラメータ値をエスケープする」という意味であれば、それは違います。 –

関連する問題