在VBScript/ASP Classic和ADO中的参数化

在VBScript/ASP Classic和ADO中的参数化

问题描述:

我在这里有点困惑。据我所知,微软声称参数化是保护数据库免受SQL注入攻击的最佳方式。但我发现这里的信息两种相互冲突的来源:在VBScript/ASP Classic和ADO中的参数化

This page表示使用ADO命令对象。但是this page表示命令对象对脚本不安全。我似乎回想起在某处读取的命令对象不应该用于VBScript或JScript中,因为存在安全漏洞,但我似乎无法找到该文章。

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

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

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

他们正在讨论的“安全”和防止SQL注入的“安全”是两回事。有关使用ADO Command对象参数化您的数据的文章是现货。你应该这样做。

而且,微软进一步证实了这一点的位置:

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

我认为“可安全执行脚本”是指“从我们刚刚从一些尼日利亚王子检索网页运行安全”。命令对象应该可以安全地在服务器上运行。

在工作,虽然,早在一天,我的同事不信任,所以我们有一个内部框架,基本上做同样的事情。