Microsoft Source Code Analyzer for SQL Injection 工具是一种静态代码分析工具,可帮助查找 Active Server Page (ASP) 代码中的 SQL 注入漏洞。本文介绍此工具的使用方法、生成的警告及其局限性
用法
<script type="text/javascript"></script> 本部分介绍使用此工具的方法。
语法
<script type="text/javascript"></script> 此工具使用下面的语法:
说明
<script type="text/javascript"></script> 此工具分析 ASP 代码以查找 SQL 注入漏洞。
参数列表
<script type="text/javascript"></script>
参数 | 选项 | 说明 |
---|---|---|
/GlobalAsaPath | 路径 | 显示 Global.asa 文件的路径。 |
/IncludePaths | 路径 | 使用虚拟路径显示所含的解析文件的路径,中间以分号分隔。 |
/input | asp 文件 | 显示必须分析的 ASP 文件的绝对路径。 |
/suppress warnings | 不报告警告。 | |
/nologo | 不显示工具徽标。 | |
/quiet | 不显示分析错误。如果您使用“/nologo”和“/quiet”开关,则只显示警告消息。 |
示例
MSSCASI_ASP /input="c:/source/logon.asp"
MSSCASI_ASP /GlobalAsaPath="C:/source" /input="c:/source/webitems/display.asp"
MSSCASI_ASP /GlobalAsaPath="C:/source" /input="c:/source/webitems/display.asp" /IncludePaths="C:/virtualdirectory1;C:/virtualdirectory2"
MSSCASI_ASP /input="c:/source/webitems/display.asp" /suppress="80406;80407"
<script type="text/javascript"></script>
检查输出结果
<script type="text/javascript"></script> 此工具生成下列警告:
警告 | 说明 |
---|---|
80400 | 在未经任何输入验证的情况下,从请求对象读取的数据中可能存在 SQL 注入漏洞。这些警告很可能是必须修补的 bug。 |
80406 | 在通过某些可能执行数据验证的未知函数调用来传递输入数据的情况下,从请求对象读取的数据中可能存在 SQL 注入漏洞。如果函数调用内部未进行数据验证,这些警告很可能是 bug。否则,这些警告为误报。 |
80403 | 来自于后端服务器的数据中可能存在 SQL 注入漏洞。如果这些数据是由最终用户通过其他网站控制,则这些警告很可能是 bug。但是,如果这些数据可信度很高,则这些警告可能不是 bug。作为深度防御策略的一部分,实行查询的参数化不失为一种好做法。 |
80407 | 来自于后端服务器并通过某些未知函数调用的数据中可能存在 SQL 注入漏洞。如果这些数据是由最终用户通过其他网站控制,并且未对这些数据进行数据验证,则这些警告很可能是 bug。 |
80420 | 函数参数中可能存在 SQL 注入漏洞。这些警告是在函数作用域生成的。因此,如果这些函数参数值的来源可信,则这些警告为误报。如果这些参数值是由最终用户控制,则这些警告很可能是 bug。您可以对这些函数参数使用 __sql_pre_validated 批注来检测最终用户是否能够访问此代码。 |
80421 | 在通过某些可能执行数据验证的未知函数调用传递的函数参数中可能存在 SQL 注入漏洞。您可以对这些函数参数使用 __sql_pre_validated 批注并对验证函数使用 __sql_validate 来检测最终用户是否能够访问此代码。 |
在此工具生成的所有警告中,警告 80400 最可能指示实际 bug。ASP Web 开发人员必须使用参数化查询修补这些 bug。