对于Web应用程序,我想构建一个WHERE子句并将其提交给服务器.在那里,我将它附加到查询.该条款将是类似的
LASTNAME LIKE 'Pep%' AND (DOB BETWEEN '19600101' AND '19601231 OR SALARY<35000)
在将该子句提交给SQL Server之前,是否可以提出一个正则表达式来验证该子句?
(是的,当然,我想要ORDER子句的正则表达式)
这是一个非常糟糕的主意.我建议你构建一个过滤系统,用户可以在表单中选择各种选项,然后构建正确的sql服务器端,而不是打开自己的各种注入攻击.
作为可能出错的一个例子,考虑一下:
LASTNAME LIKE 'Pep%'-- DROP TABLE People --
这将在您的SQL中注入DROP TABLE命令,这将很难检测到.您当然可以删除 - 和/*之类的内容,但我保证如果您这样做,有人可以找到方法.
你没有建立
LASTNAME LIKE 'Pep%' AND (DOB BETWEEN '19600101' AND '19601231 OR SALARY<35000)
你建立
LASTNAME LIKE @LastName AND (DOB BETWEEN @dobStart AND @dobEnd OR SALARY<@MaxSalary)
并传递这些家伙作为参数.没有正则表达式,没有大惊小怪.