参数真的足以阻止Sql注入吗?

参数真的足以阻止Sql注入吗?

我一直在向我的同事们讲道,在这里谈论在SQL查询中使用参数的好处,特别是在.NET应用程序中。我甚至承诺给予他们免受SQL注入攻击的抵抗力。

但我开始怀疑这是否真的如此。是否有任何已知的SQL注入攻击可以成功对抗参数化查询?例如,您可以发送一个导致服务器缓冲区溢出的字符串吗?

当然还有其他考虑因素可以确保Web应用程序是安全的(比如清理用户输入和所有内容),但现在我正在考虑SQL注入。我对MsSQL 2005和2008的攻击特别感兴趣,因为它们是我的主要数据库,但所有数据库都很有趣。

编辑:澄清参数和参数化查询的含义。通过使用参数我的意思是使用“变量”而不是在字符串中构建SQL查询。
所以不要这样做:

SELECT * FROM Table WHERE Name = 'a name'

我们这样做:

SELECT * FROM Table WHERE Name = @Name

然后在查询/命令对象上设置@Name参数的值。


翻阅古今
浏览 598回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP