更新时间:2022-02-15 16:34:48
为什么不这样做:
$reg = "/^(s*?)selects*?.*?s*?from([s]|[^;]|(['"].*;.*['"]))*?;s*?$/i";
适用于SQL SELECT查询示例:http://www.phpliveregex.com/p/6nP。
它还检查正在运行的唯一SQL查询是否是SELECT查询,因此它应该只验证它们。它通过确保只有一个;(除非That;在字符串中)来实现此目的,因此下面的代码将进行验证。
select * from users where id=1 AND name= 'Pra;bhu';
但这不会。
select * from users where id=1 AND name= 'Prabhu'; drop table;
和正则表达式,该正则表达式不检查字符串中的;,如果它在字符串中,则将失败:
$reg = "/^(s*?)selects*?.*?s*?from([s]|[^;])*?;s*?$/i"