SQL注入可以通过这个存储过程造成多大的破坏?

时间:2016-07-11 03:16:43

标签: c# sql security stored-procedures sql-injection

最近偶然发现了一个由前辈硬编码的存储过程来执行某些CRUD。它会影响生产数据库中的非关键表。我觉得它很容易受到SQL注入的影响,但似乎注入非常无害,因为它在非关键表上执行CRUD。

@LocalDatabase参数从配置文件中的ALTER PROCEDURE StoredProc_Name ( @LocalDatabase varchar(50), @Result int OUTPUT ) SET @Sql = N'UPDATE <Production Database>.Table1 SET ... FROM <Production Database>.NewTable INNER JOIN '+ @LocalDatabase +'.dbo.Table1 ON ... INNER JOIN '+ @LocalDatabase +'.dbo.Table2 ON ... WHERE NOT EXISTS(SELECT 1 FROM <Production Database>.dbo.Table2 WHERE .....)' EXEC(@Sql) SET @Result = @@ROWCOUNT 传入。

我想知道这个特定SP中可能的SQL注入是否会对生产数据库造成灾难性的损害?我正在权衡重写整个模块的成本效益。

{{1}}

感谢任何建议或帮助指出正确的方向。提前谢谢。

1 个答案:

答案 0 :(得分:1)

只要用户不影响作为@LocalDatabase传入的值,这种方法就可以了。不使用动态SQL会更好,但这种方法可以工作......