F4FActions

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

public class F4FActions
extends java.lang.Object

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

构造方法详细信息

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 时才会发生替换。因此,如果 oldVDBSig 是 Integer.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 时才会发生替换。因此,如果 oldVDBSig 是 Integer.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 时才会发生替换。因此,如果 oldVDBSig 是 Integer.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:The method
  • 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