ADO.NETでは、コマンドオブジェクトにパラメーターを追加して、SQLクエリにユーザー入力を安全に追加できます。SQLクエリに共通する他の述語に相当するものは何ですか?
私は本質的に非常に限定されたORマッパーとSQLジェネレーターであるプログラムを書いています(それはメタ情報を持つデータベースとそのメタデータに準拠する他のデータベースに重点を置いています)。結果として、私は次のようなものを呼び出すことができる必要があります:
string sql = "select " + USER_SELECTED_COLUMNS +
" from " + USER_SELECTED_TABLE +
" where " + USER_CRITERIA;
その一部(のようにcriteria
)は、信頼できるユーザー(私の会社の他の開発者)によって文字通り私のプログラムに入力されますが、他のデータは、検索などを通じて信頼できないユーザー(クライアント)によって私のプログラムに入力されます。
このプログラムを安全にしたいのですが、上記はそうではないことを認識しています。現在USER_SELECTED_COLUMNS
、コマンドパラメータに置き換えていますが、CRITERIAとTABLESに相当するものを見つけることができませんでした。(またはorder-by列)。SqlParameter
非選択述語に使用できるのと同様のADO.NET機能はありますか?