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
是呼叫位置上的「宣告」目標時,才會執行取代。因此,如果 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
是呼叫位置上的「宣告」目標時,才會執行取代。因此,如果 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
是呼叫位置上的「宣告」目標時,才會執行取代。因此,如果 oldVDBSig
是 Integer.toString()
,而我們看到呼叫 Object.toString()
,則即使可能呼叫 Integer.toString()
,我們也「不會」在該呼叫位置上執行取代。int
為參數類型,我們需要 System.Int32
等等。如果要查看從完整名稱到 VDB 中常用名稱的完整對映,請參閱 DotNetVDBUtil.systemName2VDBShortName
參數:
oldVDBSig
- 方法的簽章,該方法的呼叫應被取代newSig2Pattern
- 對映每一個可能取代方法m
的 VDB 簽章,將M
從整數參數位置對映到Patterns
。如果適當位置中的字串常數參數符合某個呼叫位置上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
類別中的java.lang.Object