正如我在以下博客中所读到的......
http://www.sommarskog.se/dynamic_sql.html
动态 sql 是不安全的,这就是我们有 sp_execute SQL 的原因。
请问,有什么办法可以让 sp_execute 运行这样的程序...
declare @QueryMain as varchar(8000)
declare @QueryBody as varchar(8000)
declare @QueryWhere as varchar(8000)
set @QueryMain = <8000 charactes>
set @QueryBody = <8000 characters>
set @QueryWhere = <8000 characters>
exec (@queryMain+@QueryBody+@QueryWhere)
这会运行,但正如我在文章中读到的那样,不建议这样做......但我想知道是否有另一种方式来运行这种查询......我试图将 3 个变量合并到 ntext 但是它没有用,顺便说一句......上面的示例查询将在查询中包含其他变量,可能是日期、用户 ID 等等!
我正在使用 sql server 2000 顺便说一句...并且正如我在谷歌上搜索的那样,我没有发现如何为 sql server 2000 操作大字符串的结果,但我有 SQLi 攻击的这种后果。