0

C# で記述されたこの Oracle SQL クエリで、次のエラーが表示されます:無効な文字

qur = " select * from emp where name LIKE '%" + TextBox1.Text + "%'";

どうすればこれを解決できますか?

4

2 に答える 2

4

問題は、クエリが SQL インジェクション攻撃に対して非常にオープンであることです。パラメータ化されたクエリを使用していないため、TextBox1 に入力されたものはクエリを破壊する可能性があります。

たとえば、テキストボックスに : ' char と入力すると、クエリが実行され、select * from emp where name LIKE '%'%'エラーがスローされます。それとは別に、これは脆弱性であり、そのようなクエリは使用しないでください。

クエリを次のように変更できます。

SqlCommand cmd= new SqlCommand( " select * from emp where name LIKE @myParam");
cmd.Parameters.AddWithValue("@myParam", "%" + TextBox1.Text + "%");

あなたが逃しました@

パラメータ化されたクエリは、SQL インジェクションに対してどのように役立ちますか?

C# パラメータ クエリ SQL の構築 - LIKE %

于 2013-03-27T13:07:58.650 に答える
-2

以下のように使用する必要があります。

qur = " select * from emp where name LIKE '%'" + TextBox1.Text + "'%'";
于 2013-03-27T13:12:09.650 に答える