1

基本问题。如果我有一个询问用户姓名、电子邮件和评论的表单,并且我将这些条目存储在数据库中......如果有人键入 SQL 查询会发生什么,例如:

DROP tablename

在评论部分。

@Name,
@Email,
@Comments

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

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

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

4

3 回答 3

5

是的,你很安全。

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

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

于 2013-07-17T02:12:12.347 回答
0

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

于 2013-07-17T02:11:42.597 回答
0

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

(下面的评论有点超出你原来问题的范围,但我强烈建议你花一些时间来了解更多关于这个主题的信息)

但是,这并不意味着您不应该以任何方式验证用户输入。即使您可以安全地避免 SQL 注入,但未能验证用户输入可能会导致您的数据被人们插入的任何内容弄脏。

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

是 MSDN 上关于此主题的一篇好文章。

于 2013-07-17T09:12:59.060 回答