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

这一页 表示使用 ADO 命令对象。但 这一页 表示命令对象对于脚本编写不安全。我似乎记得在某处读过,由于安全漏洞,命令对象不应在 VBScript 或 JScript 中使用,但我似乎找不到那篇文章。

我在这里遗漏了一些东西,还是这两篇文章似乎相互矛盾?

有帮助吗?

解决方案

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

可以安全地编写脚本 在本文中。每个在线谈论这个短语的实例都会引用它,就像您标记一个 ActiveX 控件一样,说“该控件不执行 I/O 或仅与它来自的服务器进行对话”,但 Command 对象不会这样做。它可以用来做很多不安全的事情。

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

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

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

其他提示

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top