C#アセンブリインジェクションチェック
-
03-07-2019 - |
質問
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";
所属していません StackOverflow