【发布时间】:2012-10-08 19:49:06
【问题描述】:
我在我的存储过程中使用这样的查询
SET @Statement =
'SELECT Id,Title,Content,Status,ROW_NUMBER()
OVER (ORDER BY ' + @Sort + ') AS StudentReport
FROM YearBook
WHERE ' + @Criteria + ')
AS ArticleNumber
WHERE StudentReport> ' + CONVERT(NVARCHAR, @StartRowIndex) + ' AND
StudentReport<= (' + CONVERT(NVARCHAR, @StartRowIndex + @MaximumRows);
只想知道是否可以对这个存储过程进行sql注入。如果是,我该如何预防?需要帮助!!!
【问题讨论】:
-
那是有效的 TSQL 吗?您能否展示一个代表您关注的 SP 的精简但有效的示例?
-
我已经编辑了你的问题,这是你的意思吗?如果是这样,您的 SP 如何执行该 SQL?
@Sort和@Criteria参数是否属于 SP? -
一般来说,如果您接受 varchars 并将它们视为 sql 块,那么您有一个好处和两个问题。您的 SP 将非常灵活,因为您的 SP 很灵活,很难为它制定一致的有用查询计划,为什么要有一个 SP,因为它非常灵活,我可以用它来做您可能不打算做的事情,那将是注入攻击。
-
那么,您的 SP 是如何执行动态创建的查询的呢?
-
使用 C# 代码,我正在运行 SP
标签: c# sql sql-server