我需要针对asp classic中的sql注入进行参数化,在开始进行更改之前,我应该花些时间了解哪些事情?

我需要针对asp classic中的sql注入进行参数化,在开始进行更改之前,我应该花些时间了解哪些事情?,sql,debugging,asp-classic,prepared-statement,Sql,Debugging,Asp Classic,Prepared Statement,来自PHP,我必须在这个1000文件的asp经典web应用程序上做一些sql清理,而事先不了解asp,在我开始破解它之前,我想知道在asp经典/sql参数中编写代码准备/进行asp空白修改时需要注意的任何主要问题。哪些是好的快速概览资源,我应该注意什么?确保您没有使用字符串连接向SQL查询添加参数值。了解如何使用ADO命令和参数对象。始终在SQL查询字符串中使用占位符,并将参数对象添加到命令中以提供占位符的值。同意。。。通过placeholder和ex:SqlDb.Command.Paramet

来自PHP,我必须在这个1000文件的asp经典web应用程序上做一些sql清理,而事先不了解asp,在我开始破解它之前,我想知道在asp经典/sql参数中编写代码准备/进行asp空白修改时需要注意的任何主要问题。哪些是好的快速概览资源,我应该注意什么?

确保您没有使用字符串连接向SQL查询添加参数值。了解如何使用ADO命令和参数对象。始终在SQL查询字符串中使用占位符,并将参数对象添加到命令中以提供占位符的值。

同意。。。通过placeholder和ex:SqlDb.Command.Parameters.Add进行参数化查询将是一个很大的帮助。。。不仅依赖于选择,还可以使用插入和删除进行注入

我将创建一个封装所有或大部分数据访问的函数。在以前的项目中,我创建了一个GetRecordset函数,它接受SQL语句并返回记录集实例。在函数中,我打开数据库,执行查询,关闭数据库并返回记录集。这样可以确保连接关闭

我将创建一个函数来清除SQL语句中的参数,或者更好的方法是使用参数化查询。在我不想重写查询的代码中,因此使用了连接,我将使用的函数需要一个vbVarType参数,以便我可以验证传递的值是否为指定的类型,并确保日期的格式不是特定于服务器区域性的

我将搜索单引号后跟双引号的实例。这里您正在寻找选择。。。其中StringOrDateCol='&Request.QueryStringGodKnowsWhat&

即使有了这些,你也不会抓住一切。例如,您不会捕获Select…Where NumericCol=&Request.querystringgodnowswhat。最后的搜索可能是搜索Select、Update、Insert和Delete,并检查每个SQL语句,以确保它使用您在上面2中创建的函数。

可能重复的SQL语句