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 是呼叫位置上的「宣告」目標時,才會執行取代。因此,如果 oldVDBSigInteger.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 是呼叫位置上的「宣告」目標時,才會執行取代。因此,如果 oldVDBSigInteger.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 是呼叫位置上的「宣告」目標時,才會執行取代。因此,如果 oldVDBSigInteger.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