F4FActions

java.lang.Object
  extended by com.ibm.appscan.frameworks.highlevelapi.F4FActions

public class F4FActions
extends java.lang.Object

Classe pour spécifier la manière de modéliser les constructions du cadre de l'application. Une classe F4FHandler mute l'objet F4FAction transmis à F4FHandler.handleApp(F4FApp, F4FActions) en analysant l'application.

Détails du constructeur

F4FActions

public F4FActions()

Créez un objet F4FActions vide. Ne devrait pas être requis pour implémenter un nouveau gestionnaire de frameworks, étant donné que l'objet F4FActions concerné sera transmis à F4FHandler.handleApp(F4FApp, F4FActions).

addTaintedCallback

public void addTaintedCallback(IMethod method,
                               int numParams)

Identique à addTaintedCallback (String, int), mais adopte une IMethod plutôt qu'une signature VDB.

addTaintedCallback

public void addTaintedCallback(java.lang.String vdbMethodSig,
                               int numParams)

Faites d'une méthode un rappel entaché avec tous les paramètres entachés.

Remarque : Pour les applications .NET, nous avons besoin de signatures VDB entièrement qualifiées. Dès lors, au lieu d'un type de paramètre int, nous avons besoin de System.Int32, etc. Pour consulter le mappage complet à partir de noms entièrement qualifiés vers les noms généralement utilisés dans VDB, voir DotNetVDBUtil.systemName2VDBShortName.

Paramètres :

  • vdbMethodSig - la signature de la méthode de callback
  • numParams - le nombre de paramètres pour la méthode de callback, y compris le paramètre this

replaceCalls

public void replaceCalls(java.lang.String oldVDBSig,
                         java.lang.String newVDBSig)

Remplacez tous les appels vers une méthode par des appels vers une autre méthode. Il est nécessaire que les descripteurs de l'ancienne et de la nouvelle méthode (soit le nombre d'arguments, le type d'argument et le type de retour) soient identiques.

Remarque : le remplacement n'aura lieu que lorsque oldVDBSig est la cible déclarée sur un site d'appel. Dès lors, si oldVDBSig est Integer.toString(), et que nous voyons tous un appel vers Object.toString(), nous n'allons pas effecteur de remplacement sur ce site d'appel, même s'il risque d'appeler Integer.toString().
Remarque : pour les applications .NET, nous avons besoin de signatures VDB entièrement qualifiées. Dès lors, au lieu d'un type de paramètre int, nous avons besoin de System.Int32, etc. Pour consulter le mappage complet à partir de noms entièrement qualifiés vers les noms généralement utilisés dans VDB, voir DotNetVDBUtil.systemName2VDBShortName

Paramètres :

  • oldVDBSig - signature de la méthode dont les appels doivent être remplacés
  • newVDBSig - signature de la méthode de remplacement d'appels par

replaceCallsWithSyntheticExpr

public void replaceCallsWithSyntheticExpr(java.lang.String vdbSig,
    com.ibm.appscan.frameworks.specinfo.SyntheticExpr expr)

Remplacez tous les appels vers une méthode par un WAFL arbitraire SyntheticExpr. Par exemple, il est possible de remplacer des appels par une affectation via un AssignmentExpr.

Remarque : le remplacement n'aura lieu que lorsque oldVDBSig est la cible déclarée sur un site d'appel. Dès lors, si oldVDBSig est Integer.toString(), et que nous voyons tous un appel vers Object.toString(), nous n'allons pas effecteur de remplacement sur ce site d'appel, même s'il risque d'appeler Integer.toString().
Remarque : pour les applications .NET, nous avons besoin de signatures VDB entièrement qualifiées. Dès lors, au lieu d'un type de paramètre int, nous avons besoin de System.Int32, etc. Pour consulter le mappage complet à partir de noms entièrement qualifiés vers les noms généralement utilisés dans VDB, voir DotNetVDBUtil.systemName2VDBShortName

Paramètres :

  • vdbSig - signature de la méthode dont les appels doivent être remplacés
  • expr - expression synthétique servant à remplacer des appels

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)

Remplacez des appels vers une méthode par des appels vers une autre méthode uniquement si les paramètres de type String sont des constantes correspondant à des schémas spécifiés. Il est nécessaire que les descripteurs de l'ancienne et de la nouvelle méthode (soit le nombre d'arguments, le type d'argument et le type de retour) soient identiques.

Remarque : le remplacement n'aura lieu que lorsque oldVDBSig est la cible déclarée sur un site d'appel. Dès lors, si oldVDBSig est Integer.toString(), et que nous voyons tous un appel vers Object.toString(), nous n'allons pas effecteur de remplacement sur ce site d'appel, même s'il risque d'appeler Integer.toString().
Remarque : pour les applications .NET, nous avons besoin de signatures VDB entièrement qualifiées. Dès lors, au lieu d'un type de paramètre int, nous avons besoin de System.Int32, etc. Pour consulter le mappage complet à partir de noms entièrement qualifiés vers les noms généralement utilisés dans VDB, voir DotNetVDBUtil.systemName2VDBShortName

Paramètres :

  • oldVDBSig - signature de la méthode dont les appels doivent être remplacés
  • newSig2Pattern - mappe la signature VDB de chaque méthode de remplacement m possible en une carte M à partir de positions de paramètre d'entier en Patterns. Si les paramètres de constante de la chaîne dans les positions appropriées correspondent aux schémas dans M sur un site d'appel, un remplacement en m sera réalisé.

addFrameworkInfo

public void addFrameworkInfo
(com.ibm.appscan.frameworks.specinfo.IFrameworkInfo info)

Ajoutez des informations de cadre arbitraires. Cette méthode doit uniquement être utilisée dans les rares cas où les autres API fournies sont insuffisantes.

addTaintedCallback

public void addTaintedCallback(java.lang.String vdbMethodSig,
                               java.util.Collection<TaintedParam> 
                               taintedParams)

Faites d'une méthode un rappel entaché en ne considérant que certains chemins d'accès aux paramètres comme entachés.

Remarque : pour les applications .NET, nous avons besoin de signatures VDB entièrement qualifiées. Dès lors, au lieu d'un type de paramètre int, nous avons besoin de System.Int32, etc. Pour consulter le mappage complet à partir de noms entièrement qualifiés vers les noms généralement utilisés dans VDB, voir DotNetVDBUtil.systemName2VDBShortName

Paramètres :

  • vdbMethodSig - la signature de la méthode de rappel, au format VDB
  • taintedParams - informations à propos des chemins d'accès aux paramètres à entacher

addHighLevelSyntheticMethod

public void addHighLevelSyntheticMethod(HighLevelSyntheticMethod m)

équivalent à %b. addHighLevelSyntheticMethod(m, true)

addHighLevelSyntheticMethod

public void addHighLevelSyntheticMethod(HighLevelSyntheticMethod m,
                                        boolean isEntrypoint)

Ajoutez une méthode synthétique de haut niveau. Une méthode synthétique WAFL correspondante (par exemple un point d'entrée) va être générée.

Paramètres :

  • m - la méthode
  • isEntrypoint - la méthode doit-elle être marquée comme un point d'entrée dans WAFL ?

createGlobal

public Global createGlobal(java.lang.String name,
                           java.lang.String declaredVDBType,
                           boolean isEntrypointScoped)

Créez un nouveau système global accessible via HighLevelSyntheticMethods.

Paramètres :

  • name - nom du système global
  • declaredVDBType - le type de système global déclaré (pa r ex. :java.lang.String).
    Remarque : pour les applications .NET, nous avons besoin de type de VDB entièrement qualifié. Dès lors, au lieu d'un type de paramètre int, nous avons besoin de System.Int32, etc. Pour consulter le mappage complet à partir de noms entièrement qualifiés vers les noms généralement utilisés dans VDB, voir DotNetVDBUtil.systemName2VDBShortName
  • isEntrypointScoped - si la valeur est true, le système global est limité à un seul point d'entrée (il est donc limité à la demande). Dans le cas contraire, le système global est limité entre des points d'entrée (il est donc limité à une "session" ou une "application")

Résultats :

  • un objet Global, qui peut être lu/écrit dans une HighLevelSyntheticMethod

createGlobal

public Global createGlobal(java.lang.String name,
                           IClass declaredClass,
                           boolean isEntrypointScoped)

Tout comme createGlobal(String, String, boolean), mais prend une IClass pour le type déclaré au lieu d'un nom de type

getGlobals

public java.util.Collection<Global> getGlobals()

A usage interne.

getAdditionalFrameworkInfo

public java.util.Collection
<com.ibm.appscan.frameworks.specinfo.IFrameworkInfo> 
getAdditionalFrameworkInfo()

A usage interne.

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()

A usage interne.

getCallReplacement2ExprInfo

public java.util.Map
<java.lang.String,com.ibm.appscan.frameworks.specinfo.SyntheticExpr>
getCallReplacement2ExprInfo()

A usage interne.

getCallback2TaintedParams

public java.util.Map
<java.lang.String,java.util.Collection<TaintedParam>> 
getCallback2TaintedParams()

A usage interne.

getHighLevelSyntheticMethods

public java.util.List
<com.ibm.wala.util.collections.Pair
<HighLevelSyntheticMethod,java.lang.Boolean>> 
getHighLevelSyntheticMethods()

A usage interne.

toString

public java.lang.String toString()

Remplace :

  • toString dans la classe java.lang.Object