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)使方法成为受感染的回调,所有参数都将受感染。
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()。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()。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()。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)使某些方法成为受感染的回调,只有某些参数访问路径被视为受感染。
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 methodisEntrypoint:是否应将方法标记为 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.systemName2VDBShortNameisEntrypointScoped:如果为 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()覆盖:
toStringin classjava.lang.Object