我怎样才能知道/检查我的经典ASP网站是否受到SQL注入的保护?

时间:2012-12-13 03:16:54

标签: asp-classic sql-injection

我有一个使用经典ASP技术进行维护的网站。 现在,我的客户正在询问该网站是否受到SQL注入的保护。

我尝试使用Microsoft Source Code Analyzer for SQL Injection,测试后我没有收到任何警告。

是否有其他方法可以检查/验证这些经典ASP源代码是否受到SQL注入攻击的保护?

请指教! 感谢

2 个答案:

答案 0 :(得分:5)

没有一种方法可以知道。您可以发布一些代码并查看其外观。

关键是你不要使用来自外部的污染数据构建S​​QL语句。

如果您构建这样的声明

sql = "select * from whatever where id = " + id_parameter

然后您正在使用来自外部世界的数据构建S​​QL语句,这很危险。

您必须使用参数化查询,如下所示:

objCmd.CommandType = adCmdText;
objCmd.CommandText = "UPDATE members SET photo = ? WHERE memberID = ?";
objCmd.Parameters.Append(
    objCmd.CreateParameter("filename", adVarChar, adParamInput, 510, fileName));
objCmd.Parameters.Append(
    objCmd.CreateParameter("memberID", adInteger, adParamInput, 4, memberid ));
objCmd.Execute(adExecuteNoRecords);

请注意,objCmd.CommandText不使用外部的任何数据。外部数据通过CreateParameter调用汇集。

答案 1 :(得分:0)

将代码修补为sql注入的简单方法是在数字上使用函数Cint():

if (request("id")<>"") then id=Cint(id)

或字符串:

if (request("str")<>"") then
 str=Replace(request("str"),"'","''")
 str=Replace(request("str"),"%","")
end if

希望这会有所帮助