我正在开发一个与数据库连接的 Java 桌面应用程序,我想知道下一个。结果,据我所知,Prepared Statements 避免了 SQL 注入,而您不直接连接用户数据,但今天我发现它不会转义字符串正则表达式(如 LIKE 运算符中的 '%', ) 因为它只是转义了可能破坏字符串本身并改变查询的字符。因此,如果用户这样做:
Search = "%Dogs"; // User input
Query = "SELECT * FROM Table WHERE Field LIKE ?";
blah.setString(1, Search);
它将通过注入返回所有开头包含“Dogs”的行。
现在我问:
1-) 从全球角度来看,这是否是一件坏事/危险的事情?
2-) 是否有 Mysql 可以从字符串中使用的完整正则表达式列表?如果是这样,你能和我分享一下吗?
谢谢你。