Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql,处理字符串正则表达式_Mysql_Regex_Security_Code Injection - Fatal编程技术网

Mysql,处理字符串正则表达式

Mysql,处理字符串正则表达式,mysql,regex,security,code-injection,Mysql,Regex,Security,Code Injection,我正在开发一个与数据库连接的Java桌面应用程序,我想知道下一个。结果,据我所知,准备好的语句避免了SQL注入,而不直接连接用户数据,但今天我发现它不会转义字符串正则表达式(如like运算符中的“%”),因为它只转义可能会打断字符串本身并改变查询的字符。因此,如果用户这样做: Search = "%Dogs"; // User input Query = "SELECT * FROM Table WHERE Field LIKE ?"; blah.setString(1, Search); 它

我正在开发一个与数据库连接的Java桌面应用程序,我想知道下一个。结果,据我所知,准备好的语句避免了SQL注入,而不直接连接用户数据,但今天我发现它不会转义字符串正则表达式(如like运算符中的“%”),因为它只转义可能会打断字符串本身并改变查询的字符。因此,如果用户这样做:

Search = "%Dogs"; // User input
Query = "SELECT * FROM Table WHERE Field LIKE ?";
blah.setString(1, Search);
它将通过注入返回开头包含“Dogs”的所有行

现在我要问:

1-)从全球角度来看,这是一件糟糕/危险的事情吗

2-)Mysql可以从字符串中使用正则表达式的完整列表吗?如果是的话,你能和我分享一下吗


谢谢。

如果用户在搜索中使用这些元字符,结果可能是灾难性的,也可能不是灾难性的,但是搜索
%%
可能是不好的。对
%Dogs
的有效搜索可能也不会返回用户期望的结果,这会影响他们的体验


只提供两个元字符,因此当从用户处获取时,您可以自己转义它们(只需使用类似于
Search=Search.replaceAll(“%”,“\\\\%”)的东西即可)。

这不是正则表达式,就像是。也许您的意思是说,
LIKE
的文档中可能有重复的@Bohemian“使用SQL简单正则表达式比较进行模式匹配。”同意,另外一件事,除了LIKE之外,是否还有其他运算符/函数/etc对表达式进行那样的计算?@Neo不是那样的,但是有
RLIKE