SQL注入难题 - 什么构成SQL Server'批处理'?

时间:2015-12-14 11:12:31

标签: sql-server

我正在调查SQL注入攻击问题(本例中为SQL Server数据库)。在任何人提出建议之前,我知道参数化查询是最终的解决方案,但这在遗留代码中并不容易或直接,所以请耐心等待。

难题是这个(格式错误的)命令“批处理”实际上有效:

select * from table1 where tableCode LIKE '' delete from table1

现在我对SQL Server文档的理解是,这不是一个合法的命令批处理,因为没有分号分隔符,所以严格来说它应该被SQL Server拒绝。但它不是,并且两个命令正确执行,具有预期的结果。

这是一个SQL Server不符合自己的文档,还是我错过了什么?

1 个答案:

答案 0 :(得分:2)

这是一个非常有效的SQL Server SQL语句。所有当前版本中的分号都是可选的。 MSDN文档声明最佳实践是使用分号来结束SQL语句,因为可选的很快将被弃用。分号是ANSI SQL-92标准的一部分,但从未在Transact-中使用SQL。