0

クライアントのクエリをテストしていて、興味深い質問に出くわしました。悪意のあるハッカーSQLが次のクエリを挿入する可能性があります。

SELECT * FROM mytable WHERE 1
AND cfield='0'
AND (
field1 like '%$searchterm%' OR
field2 like '%$searchterm%' OR
)

たとえば、私の考えでは、最初の$ searchtermの後にあるものをコメントアウトして、他のクエリを挿入する方法はありません。

field1 like '%$searchterm%'

それでも、私は間違っているかもしれません。ご意見をお待ちしております。前もって感謝します!

4

2 に答える 2

5

代わりにこれを試してください:

SELECT * FROM mytable WHERE 1
AND cfield='0'
AND (
field1 like '%' || :searchterm || '%' OR
field2 like '%' || :searchterm || '%' OR
)

...:searchtermお気に入りの言語が提供する機能に入力された入力パラメーターはどこにありますか。

于 2012-10-17T16:26:58.147 に答える
4
searchterm = "');drop table customers;SELECT * FROM mytable WHERE ( field1 like '"
于 2012-10-17T16:20:12.630 に答える