4

我在这里有点困惑。据我所知,微软声称参数化是保护数据库免受 SQL 注入攻击的最佳方式。但我在这里发现了两个相互矛盾的信息来源:

该页面说使用 ADO 命令对象。但是这个页面说命令对象对于脚本来说是不安全的。我似乎记得在某处读过,由于安全漏洞,命令对象不应该在 VBScript 或 JScript 中使用,但我似乎找不到那篇文章。

我在这里遗漏了什么,或者这两篇文章似乎相互矛盾?

4

2 回答 2

4

我在这里可能是错的,但我认为这只是意味着有人可以使用 Command 对象做坏事。即,如果其他人正在编写脚本,则不值得信任。

请参阅本文中的脚本安全。每个在线谈论这个短语的实例都会引用它,就好像你正在标记一个 ActiveX 控件,说“这个控件没有 I/O 或只与它来自的服务器对话”,但 Command 对象不这样做。它可以用来做很多可能不安全的事情。

他们所说的“安全”和防止SQL注入的“安全”是两个不同的东西。关于使用 ADO Command 对象参数化数据的文章很贴切。你应该这样做。

而且,微软在这里进一步证实了这一点:

http://msdn.microsoft.com/en-us/library/ms676585(v=VS.85).aspx

于 2008-09-11T21:21:19.937 回答
1

我认为“脚本安全”的意思是“可以安全地从我们刚刚从某个尼日利亚王子那里检索到的网页运行”。命令对象应该可以安全地在服务器上运行。

不过在工作中,当时我的同事并不信任它,所以我们有一个内部框架,基本上做同样的事情。

于 2008-09-11T21:25:21.347 回答