0

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

但我的问题是,如果我只使用 SqlParameter 将数据插入表中而不使用 exec 命令,我是否还有 SQL 注入的风险?

4

2 回答 2

1

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

只要您将命令和数据通道分开(保持将执行的查询独立于查询将运行的变量的值),您就不能进行 SQL 注入(因为 SQL 注入的定义使用数据通道将某些东西滑入命令通道)

于 2013-06-27T07:21:17.430 回答
1

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

于 2013-06-27T07:23:56.520 回答