SQL查询作为参数发送的危险?

时间:2013-07-17 02:06:10

标签: sql sql-server sql-injection database-security

基本问题。如果我有一个表格要求用户提供他们的姓名,电子邮件和评论,我将条目存储在数据库中...如果有人输入SQL查询会发生什么情况,如:

DROP tablename

在评论部分。

@Name,
@Email,
@Comments

INSERT INTO mytable (Name, Email, Comments) VALUES (@Name, @Email, @Comments)

是否存在SQL注入的风险或我是否完全安全?

SQL Server 2008 处理插入的存储过程。

3 个答案:

答案 0 :(得分:5)

是的,你很安全。

SQL注入通过插入恶意输入来更改SQL查询的语法

但是一个查询参数总是替换一个标量值。如果使用参数,任何恶意输入都无法改变查询的语法。

答案 1 :(得分:0)

您可以使用参数对象。它可以限制SQL注入。不要使用内联SQL。如果使用SQL内联,请检查参数中的单引号(“'”)。

答案 2 :(得分:0)

对您的问题的简短回答是 - 如果您使用参数,那么您将是安全的。

(以下评论有点超出原始问题的范围,但我强烈建议您花点时间了解有关此主题的更多信息)

但这并不意味着您不应以任何方式验证用户输入。即使您不安全地使用SQL注入,但未能验证用户输入可能导致您的数据变脏,几乎任何人都会插入。

此外,请确保您使用权限最少的帐户来进一步提高安全性。

Here是来自MSDN的关于此主题的好文章。