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)將方法變成受污染的回呼,其中所有參數都受到污染。
System.Int32 等而非 int。若要查看從完整名稱到通常在 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(),我們也「不會」在該呼叫位置上執行取代。System.Int32 等而非 int。若要查看從完整名稱到通常在 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(),我們也「不會」在該呼叫位置上執行取代。System.Int32 等而非 int。若要查看從完整名稱到通常在 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(),我們也「不會」在該呼叫位置上執行取代。System.Int32 等而非 int。若要查看從完整名稱到通常在 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)將某個方法變成污染的回呼,但只將特定的參數存取路徑視為污染。
System.Int32 等而非 int。若要查看從完整名稱到通常在 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 類型。因此,我們需要的參數類型為System.Int32等而非int。若要查看從完整名稱到通常在 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()覆寫:
toString類別中的java.lang.Object