关于sql server:VBScript / ASP Classic和ADO中的参数化

关于sql server:VBScript / ASP Classic和ADO中的参数化

parametrization in VBScript/ASP Classic and ADO

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

该页面说要使用ADO命令对象。 但是此页面说该命令对象不适用于脚本。 我似乎回想起曾经读过的文章,由于存在安全漏洞,不应在VBScript或JScript中使用命令对象,但是我似乎找不到该文章。

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


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

请参阅本文的脚本安全。每个在网上讨论此短语的实例都引用它,就像您标记一个ActiveX控件时说的那样:"此控件不执行I / O或仅与它来自的服务器进行对话",而Command对象则不这样做。它可以用来做很多不安全的事情。

他们所说的"安全"和防止SQL注入的"安全"是两回事。有关使用ADO Command对象对数据进行参数化的文章很详细。你应该那样做。

并且,Microsoft在这里进一步确认了这一点:

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


我认为"脚本安全"是指"可以从刚刚从尼日利亚王子那里获得的网页上运行"。该命令对象应该可以在服务器上安全运行。

但是,在工作中,回到过去,我的同事们并不信任它,因此我们拥有一个内部框架,基本上可以完成相同的工作。


推荐阅读