在用户生成的SQL-regex中避免SQL注入

Kal*_*uld 3 php regex mysql sql-injection

我正在创建一个站点,其中用户不幸地必须提供在MySQL WHERE子句中使用的正则表达式.当然,我必须验证用户输入以防止SQL注入.该网站是用PHP制作的,我使用以下正则表达式检查我的正则表达式:

/^([^\\\\\']|\\\.)*$/
Run Code Online (Sandbox Code Playgroud)

由于PHP处理正则表达式的方式,这是双重转义.它应该工作的方式是只匹配安全的正则表达式,而没有未转义的单引号.但大多数是自学成才,我想知道这是否是一种安全的方式.

Nea*_*all 9

如果使用预准备语句,则无法进行SQL注入.您应该始终使用预准备语句.

关于昂贵的正则表达,Roborg提出了一个很好的观点.