2

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

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

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

请指教!谢谢

4

2 回答 2

5

没有一种方法可以知道。您可以发布一些代码,看看它的外观。

关键是您不要使用来自外部的受污染数据构建 SQL 语句。

如果你建立这样的陈述

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

那么您正在使用来自外部世界的数据构建 SQL 语句,这很危险。

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

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 调用汇集。

于 2012-12-13T04:07:33.993 回答
0

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

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

或字符串:

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

希望这可以帮助

于 2012-12-13T19:40:54.380 回答