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)

將方法變成受污染的回呼,其中所有參數都受到污染。

註: 對於 .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 是呼叫位置上的「宣告」目標時,才會執行取代。因此,如果 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 是呼叫位置上的「宣告」目標時,才會執行取代。因此,如果 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 是呼叫位置上的「宣告」目標時,才會執行取代。因此,如果 oldVDBSig 是 Integer.toString(),而我們看到呼叫 Object.toString(),則即使可能呼叫 Integer.toString(),我們也「不會」在該呼叫位置上執行取代。
註: 對於 .NET 應用程式,我們需要完整的 VDB 簽章。因此,不以 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)

將某個方法變成污染的回呼,但只將特定的參數存取路徑視為污染。

註: 對於 .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 - 方法
  • 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