ユーザー入力から文字列を取得し、それを空白で (\w を使用して) 文字列の配列に分割しています。次に、配列をループして、次のように where 句の一部を追加します。
query += " AND ( "
+ "field1 LIKE '%" + searchStrings[i] +"%' "
+ " OR field2 LIKE '%" + searchStrings[i] +"%' "
+ " OR field3 LIKE '%" + searchStrings[i] +"%' "
+ ") ";
ユーザー入力をクエリに追加しているので、これは危険だと思います。ただし、最初の入力を空白で分割したため、どの検索文字列にも空白がないことはわかっています。
これを SQL インジェクションで攻撃することは可能ですか? Robert');DROP TABLE students;--
そこには空白が必要なので、与えても実際には何もドロップしません。その例では、適切に動作しませんが、損傷はありません。
SQL インジェクションとの戦いの経験が豊富な人は、これを修正したり、安心したりするのに役立ちますか?
ありがとう!
編集:
うわー、それはたくさんの素晴らしいインプットです。回答してくださった皆様、ありがとうございました。全文検索を調査し、少なくともクエリをパラメーター化します。
問題をよりよく理解できるように、すべての空白と一重引用符がエスケープされている場合、注入することは可能でしょうか?