当我使用参数化查询时,是否需要保护我的ASP网站免受SQL注入?

时间:2012-06-19 12:41:06

标签: security asp-classic sql-injection

我收到了纠正ASP网站的要求,该网站具有许多防止SQL注入的功能。

本网站不允许我们的客户在本网站注册。

在客户名称上有“SELECT”字样。防止SQL注入的功能正在替换“”字的“SELECT”。 当他收到一封没有他名字的信时,客户当然不喜欢。洛尔

该网站使用旧的经典ASP方式访问数据,如:

strSQL = "SELECT name " & _
   "FROM MyTable " & _
             "WHERE (ID=" & itemID & ") AND (CompanyID=" & companyID & ") AND (MenuTitle LIKE '%" & titleText & "%') "
recordset.Open strSQL

因此,他们需要使用这些函数来防止SQL注入。

我想改变它,我将开始使用参数化查询。

所以,我的问题是:如果我使用参数化查询,我是否可以安全地删除这些函数以防止来自此站点的SQL注入?

3 个答案:

答案 0 :(得分:3)

使用参数化查询 是网络服务器和数据库之间层中的保护,只有在以这种方式使用每个用户数据的情况下才能保护SQL注入。

但是,您仍然可以从数据库层内部获取SQL注入问题,因此请确保不要通过字符串插值调用任何自己构建查询的存储过程。

答案 1 :(得分:1)

我不会仅仅依赖参数化查询作为防止sql注入和其他类型的黑客攻击的唯一形式。建议保持内部或第三方维护级别的安全软件/代码,以防止SQL注入,跨站点脚本,软件安全漏洞等。

您可以考虑使用URLScan 3.1替换其多个功能,以便快速有效地保护您的应用程序免受IIS级别的SQL注入尝试,以及,因为您正在通过应用程序正确清理您的应用程序您/其他人已经提出过的SQL语句。

答案 2 :(得分:0)

简短的回答是肯定的。

长期答案是肯定的,但您仍然希望对您的输入进行消毒。不一定是像“SELECT”这样的单词,而是非字母数字字符或任何可疑的东西(基于用例)。参数化查询是安全性的重要组成部分,但它不是灵丹妙药。