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)
使方法成为受感染的回调,所有参数都将受感染。
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
- 方法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 classjava.lang.Object