使用SqlParameter可以完全避免sql注入吗?

时间:2013-06-27 07:00:45

标签: c# asp.net sql-injection

如果我需要将数据插入表中,使用SqlParameter是最佳选择。 但我听说有人说SqlParameter在SQL注入方面仍有一些缺陷。 证明是联系sql字符串并运行exec命令。在这种情况下,SQL注入仍然存在一些风险。

但我的问题是,如果我只使用SqlParameter在没有exec命令的情况下将数据插入到表中,我是否还有SQL注入的风险?

2 个答案:

答案 0 :(得分:1)

exec示例的问题是您正在运行两个查询。第一个查询使用concation来构建第二个sql字符串,然后执行第二个查询。

只要保持命令和数据通道分离(保持查询将独立于查询将运行的变量的值执行),就不能使用SQL注入(作为定义) 的SQL注入正在使用数据通道将某些东西放入命令通道中

答案 1 :(得分:1)

是的,只要您可以使用参数动态添加到查询中的每个语句。
太糟糕了,大多数框架都不允许这样,但仅限于一些简单的数据类型。