正则表达式可以用来防止SQL注入吗

Can a Regular Expression Be Used to Prevent SQL Injection

在我问之前 - 我确实知道 paranterised 查询但是这个问题特别是 baout 正则表达式以防止 SQL 注入

假设我有一个参数为 q 的查询字符串,我有一个 ^201[0-9]Q[0-9]$ 的正则表达式,我 运行 反对传递给 SQL 的参数.

这足以作为保护吗?还是可以利用正则表达式?一些伪代码:

 if NOT validateToken(quarter) then
     sql = "EXEC dbo.spTest '"&quarter&"'"
 end if

谢谢

在你的情况下,是的,检查足以防止 SQL 注入。 您提供的检查类型是处理用户输入时所需的检查类型。

因此,根据经验,您永远不应连接用户提供的数据和 SQL 代码,除非您对参数的内容进行了全面检查。

等等!您是在 .Net 还是 SQL 中检查参数?如果在 .Net 中,你就安全了。 如果不安全代码达到 SQL,你就完蛋了。