データベースに接続する Java デスクトップ アプリケーションを開発していますが、次のことを知りたいです。私の知る限り、Prepared Statements はユーザー データと直接連結しない限り SQL インジェクションを回避しますが、今日、文字列の正規表現 (LIKE 演算子の '%' など) をエスケープしないことがわかりました。 ) 文字列自体を分割してクエリを変更する可能性のある文字をエスケープするだけであるためです。したがって、ユーザーが行う場合:
Search = "%Dogs"; // User input
Query = "SELECT * FROM Table WHERE Field LIKE ?";
blah.setString(1, Search);
インジェクションにより、先頭に「Dogs」を含むすべての行が返されます。
今私は尋ねます:
1-) これは、グローバルな視点から見ると何か悪い/危険なことですか?
2-) Mysql が文字列内から使用できる正規表現の完全なリストはありますか? もしそうなら、それを私と共有してもらえますか?
ありがとうございました。