F4FActions

java.lang.Object
  extended by com.ibm.appscan.frameworks.highlevelapi.F4FActions

public class F4FActions
extends java.lang.Object

用于指定如何对应用程序的框架构造进行建模的类。在分析应用程序时,F4FHandler 对传递给 F4FHandler.handleApp(F4FApp, F4FActions)F4FAction 对象进行突变。

构造方法详细信息

F4FActions

public F4FActions()

创建空 F4FActions 对象。在实现新框架处理程序时应非必需,因为相关 F4FActions 对象将传递给 F4FHandler.handleApp(F4FApp, F4FActions)

addTaintedCallback

public void addTaintedCallback(IMethod method,
                               int numParams)

addTaintedCallback (String, int)相同,但直接采用 IMethod 而不是 VDB 签名

addTaintedCallback

public void addTaintedCallback(java.lang.String vdbMethodSig,
                               int numParams)

使方法成为受感染的回调,所有参数都将受感染。

注: 对于 .NET 应用,我们需要标准的 VDB 签名。因此,我们需要的不是 int 参数类型,而是 System.Int32 等。要查看从标准名称到 VDB 中常用名称的完整映射,请参阅 DotNetVDBUtil.systemName2VDBShortName

参数:

  • vdbMethodSig - callback方法的签名
  • numParams - callback 方法的参数数,包括 this 参数

replaceCalls

public void replaceCalls(java.lang.String oldVDBSig,
                         java.lang.String newVDBSig)

将所有对一个方法的调用替换为对另一个方法的调用。我们要求新旧方法的描述符(即参数数、参数类型和返回类型)相同。

注: 仅当 oldVDBSig 是调用站点中的 _declared_ target 时才会发生替换。因此,如果 oldVDBSigInteger.toString(),并且我们看到对 Object.toString() 的调用 ,我们将在不该调用站点中执行替换,即使它可能会调用 Integer.toString()
注: 对于 .NET 应用,我们需要标准的 VDB 签名。因此,我们需要的不是 int 参数类型,而是 System.Int32 等。要查看从标准名称到 VDB 中常用名称的完整映射,请参阅 DotNetVDBUtil.systemName2VDBShortName

参数:

  • oldVDBSig - 方法签名,该方法的调用应被替换
  • newVDBSig - 方法签名,要将调用替换为该方法

replaceCallsWithSyntheticExpr

public void replaceCallsWithSyntheticExpr(java.lang.String vdbSig,
    com.ibm.appscan.frameworks.specinfo.SyntheticExpr expr)

将对方法的所有调用替换为任意 WAFL SyntheticExpr。例如,可以通过 AssignmentExpr 将调用替换为分配。

注: 仅当 oldVDBSig 是调用站点中的 _declared_ target 时才会发生替换。因此,如果 oldVDBSigInteger.toString(),并且我们看到对 Object.toString() 的调用 ,我们将在不该调用站点中执行替换,即使它可能会调用 Integer.toString()
注: 对于 .NET 应用,我们需要标准的 VDB 签名。因此,我们需要的不是 int 参数类型,而是 System.Int32 等。要查看从标准名称到 VDB 中常用名称的完整映射,请参阅 DotNetVDBUtil.systemName2VDBShortName

参数:

  • vdbSig - 方法签名,该方法的调用应被替换
  • expr - 要将调用替换为的合成表达式

replaceCallsWithParamPattern

public void replaceCallsWithParamPattern(java.lang.String oldVDBSig,
                                         java.util.Map<java.lang.String,
                                         java.util.Map<java.lang.Integer,
                                         java.util.regex.Pattern>> 
                                         newSig2Pattern)

仅当 String 类型的参数是可满足指定模式要求的常量时,才将对一个方法的调用替换为对另一种方法的调用。我们要求新旧方法的描述符(即参数数、参数类型和返回类型)相同。

注: 仅当 oldVDBSig 是调用站点中的 _declared_ target 时才会发生替换。因此,如果 oldVDBSigInteger.toString(),并且我们看到对 Object.toString() 的调用 ,我们将在不该调用站点中执行替换,即使它可能会调用 Integer.toString()
注: 对于 .NET 应用,我们需要标准的 VDB 签名。因此,我们需要的不是 int 参数类型,而是 System.Int32 等。要查看从标准名称到 VDB 中常用名称的完整映射,请参阅 DotNetVDBUtil.systemName2VDBShortName

参数:

  • oldVDBSig - 方法签名,该方法的调用应被替换
  • newSig2Pattern - 将每个可能替换方法 m 的 VDB 签名映射到从整数参数位置到 Patterns 的映射 M 。如果适当位置中的字符串常量参数与某些调用站点中 M 中的模式匹配,则将执行对 m 的替换。

addFrameworkInfo

public void addFrameworkInfo
(com.ibm.appscan.frameworks.specinfo.IFrameworkInfo info)

添加任意附加框架信息。仅在已提供的其他 API 不足的极少数情况下,才应需要此方法。

addTaintedCallback

public void addTaintedCallback(java.lang.String vdbMethodSig,
                               java.util.Collection<TaintedParam> 
                               taintedParams)

使某些方法成为受感染的回调,只有某些参数访问路径被视为受感染。

注: 对于 .NET 应用,我们需要标准的 VDB 签名。因此,我们需要的不是 int 参数类型,而是 System.Int32 等。要查看从标准名称到 VDB 中常用名称的完整映射,请参阅 DotNetVDBUtil.systemName2VDBShortName

参数:

  • vdbMethodSig - 回调方法的签名(具有 VDB 格式)
  • taintedParams - 有关哪些参数访问路径应受感染的信息

addHighLevelSyntheticMethod

public void addHighLevelSyntheticMethod(HighLevelSyntheticMethod m)

等效于 addHighLevelSyntheticMethod(m, true)

addHighLevelSyntheticMethod

public void addHighLevelSyntheticMethod(HighLevelSyntheticMethod m,
                                        boolean isEntrypoint)

添加高级别合成方法。将生成相应的 WAFL 合成方法(可能是入口点)。

参数:

  • m - 方法
  • isEntrypoint - 是否应将方法标记为 WAFL 中的入口点?

createGlobal

public Global createGlobal(java.lang.String name,
                           java.lang.String declaredVDBType,
                           boolean isEntrypointScoped)

创建可以从 HighLevelSyntheticMethods 访问的新全局。

参数:

  • name - 全局名称
  • declaredVDBType - 声明的全局类型(例如,java.lang.String
    注: 对于 .NET 应用,我们需要标准的 VDB 类型。因此,我们需要的不是 int 参数类型,而是 System.Int32 等。要查看从标准名称到 VDB 中常用名称的完整映射,请参阅 DotNetVDBUtil.systemName2VDBShortName
  • isEntrypointScoped - 如果为 true,则全局的作用域为单个入口点(即请求作用域)。否则,全局的作用域为跨各入口点(即,它是"会话"或"应用程序"作用域)

返回:

  • 全局对象,可在以下读取/写入 HighLevelSyntheticMethod

createGlobal

public Global createGlobal(java.lang.String name,
                           IClass declaredClass,
                           boolean isEntrypointScoped)

createGlobal(String, String, boolean) 类似,但是对于声明类型将采用 IClass,而不是类型名称

getGlobals

public java.util.Collection<Global> getGlobals()

供内部使用。

getAdditionalFrameworkInfo

public java.util.Collection
<com.ibm.appscan.frameworks.specinfo.IFrameworkInfo> 
getAdditionalFrameworkInfo()

供内部使用。

getCallReplacement2SigsInfo

public java.util.Map
<java.lang.String,java.util.Map
<java.lang.String,java.util.Map
<java.lang.Integer,java.util.regex.Pattern>>>
getCallReplacement2SigsInfo()

供内部使用。

getCallReplacement2ExprInfo

public java.util.Map
<java.lang.String,com.ibm.appscan.frameworks.specinfo.SyntheticExpr>
getCallReplacement2ExprInfo()

供内部使用。

getCallback2TaintedParams

public java.util.Map
<java.lang.String,java.util.Collection<TaintedParam>> 
getCallback2TaintedParams()

供内部使用。

getHighLevelSyntheticMethods

public java.util.List
<com.ibm.wala.util.collections.Pair
<HighLevelSyntheticMethod,java.lang.Boolean>> 
getHighLevelSyntheticMethods()

供内部使用。

toString

public java.lang.String toString()

覆盖:

  • toString in class java.lang.Object