“源和接收器”视图
“源和接收器”视图提供基于对输入和输出的跟踪来查看结果的能力
“源和接收器”视图分为三个部分:
- 源和接收器:在左侧面板中,有三个顶级节点:
- 源:源是对程序的输入,如文件、servlet 请求、控制台输入或套接字。对于大多数输入源,返回的数据在内容和长度方面没有限制。在未检查某个输入的情况下,会将其视为已感染。源列在任一结果表的源列中。
- 接收器:接收器可以是可将数据写出到的任何外部格式。接收器示例包括数据库、文件、控制台输出和套接字。数据未经检查就写入接收器可能预示着严重的安全漏洞。
- 丢失的接收器是无法继续跟踪的 API 方法。
可以对每个节点进行扩展以显示受影响的软件包。软件包进而可进一步扩展以显示受影响的类以及方法。然后可以对这些方法进行扩展以在跟踪的另一端显示软件包、类以及方法。例如,如果您关注某个特定的接收器,那么您可以向下钻取到接收器根目录下的方法。一旦到达此处,该方法下的树将显示返回(指向该接收器的)所有源的路径:
- Sources - packageA - classA - methodA - packageB - classB - methodB (at opposite end of trace) - Sinks - packageB - classB - methodB - packageA - classA - methodA - Lost Sinks
在此树视图中所作的选择将确定在视图的其他两个部分中显示的内容。
- 中间节点:视图的此部分显示应用于“源和接收器”部分中所选项的跟踪的所有中间节点的集合。它允许您对结果表中显示的内容进行优化。
此部分在缺省情况下会隐藏。通过单击显示/隐藏中间调用表可对其进行显示(或再次隐藏)。
要仅显示软件包、类或方法的结果,请选中其必需列中的复选框。要过滤出软件包、类或方法的结果,请选中其除去列中的复选框。在此部分中所作的过滤器设置可以用来创建新过滤器。
用法示例:给定“源和接收器”部分中的以下树节点:
- Sources - java.util - Properties - getProperty
当选择
getProperty
时,结果表仅显示包含将getProperty
作为源的跟踪的那些结果。此时,中间节点部分将显示源为getProperty
的所有跟踪的所有中间节点(跟踪内除了源和接收器之外的所有节点)。然而,您可能不关心跟踪是否通过了特定 API。例如,您可能具有用于确保来自getProperty
中的数据有效性的验证例程,因此,您不想查看通过此验证例程的跟踪。中间节点部分将包含此验证例程,因为它是跟踪的中间节点。您可以浏览到中间节点部分中的此验证例程,然后单击其除去复选框。这将从具有通过了此中间节点的跟踪的结果表中除去所有结果。 - 发现结果:此部分与 “发现结果”视图 以及具有结果的其他视图都具有相同的 结果表(以及关联操作)。它显示您已选择以在视图的其他两个部分中显示的源、接收器和中间节点的结果。