質問

MS SQL 2005のC#でアセンブリを作成しています。このアセンブリはストアドプロシージャを作成し、ストアドプロシージャに渡されたパラメータに基づいて動的クエリを実行します。

C#にSQLインジェクションを防ぐ簡単な関数はありますか?

たとえば

string myQuery = "SELECT * FROM dbo.MyTable WHERE lastName = '" + injectionCheck(arg1) + "'";

この質問は標準クエリで回答されました...しかし、真の動的クエリを構築する方法がない状況では、インジェクションチェックのためにC#で何を使用できますか?

たとえば、これらはおそらく動作しません:

@dbNameを使用;

SELECT * FROM @table

対称キーを開く@keyName

etc

役に立ちましたか?

解決

バインドされたパラメーターを使用:

SqlCommand cmd = new SqlCommand(myQuery, conn);
cmd.Parameters.Add("@lastname", SqlDbType.NVarChar, 10, lastName);

他のヒント

パラメータを使用....

(これはすでに頻繁に投稿されています)

string myQuery = "SELECT * FROM myTable WHERE lastname = @p_name";

SqlCommand cmd = new SqlCommand();
cmd.CommandText = myQuery;
cmd.Parameters.Add ("@p_name", SqlDbType.Varchar).Value = "melp";
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top