2013-06-27 36 views
0

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

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

+1

您可以在本主题中获得一些信息。这个问题似乎是相同的:http://stackoverflow.com/questions/306668/are-parameters-really-enough-to-prevent-sql-injections –

+0

你如何分享代码,我会尝试注入一些SQL到它 –

回答

1

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

只要你保持你的命令和你的数据通道是分开的(保持查询将独立于查询将运行的变量值),你不能有SQL注入(如定义的SQL注入正在使用数据通道来滑入某个命令通道)

1

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

相关问题