基本问题。如果我有一个表格要求用户提供他们的姓名,电子邮件和评论,我将条目存储在数据库中...如果有人输入SQL查询会发生什么情况,如:
DROP tablename
在评论部分。
@Name,
@Email,
@Comments
INSERT INTO mytable (Name, Email, Comments) VALUES (@Name, @Email, @Comments)
是否存在SQL注入的风险或我是否完全安全?
SQL Server 2008 处理插入的存储过程。
答案 0 :(得分:5)
是的,你很安全。
SQL注入通过插入恶意输入来更改SQL查询的语法。
但是一个查询参数总是替换一个标量值。如果使用参数,任何恶意输入都无法改变查询的语法。
答案 1 :(得分:0)
您可以使用参数对象。它可以限制SQL注入。不要使用内联SQL。如果使用SQL内联,请检查参数中的单引号(“'”)。
答案 2 :(得分:0)
对您的问题的简短回答是 - 如果您使用参数,那么您将是安全的。
(以下评论有点超出原始问题的范围,但我强烈建议您花点时间了解有关此主题的更多信息)
但这并不意味着您不应以任何方式验证用户输入。即使您不安全地使用SQL注入,但未能验证用户输入可能导致您的数据变脏,几乎任何人都会插入。
此外,请确保您使用权限最少的帐户来进一步提高安全性。
Here是来自MSDN的关于此主题的好文章。