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.
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 decallback
numParams
- le nombre de paramètres pour la méthode decallback
, y compris le paramètrethis
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.
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()
.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ésnewVDBSig
- 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
.
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()
.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ésexpr
- 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.
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()
.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ésnewSig2Pattern
- mappe la signature VDB de chaque méthode de remplacementm
possible en une carteM
à partir de positions de paramètre d'entier enPatterns
. Si les paramètres de constante de la chaîne dans les positions appropriées correspondent aux schémas dansM
sur un site d'appel, un remplacement enm
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.
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 VDBtaintedParams
- 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éthodeisEntrypoint
- 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 globaldeclaredVDBType
- 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ètreint
, nous avons besoin deSystem.Int32
, etc. Pour consulter le mappage complet à partir de noms entièrement qualifiés vers les noms généralement utilisés dans VDB, voirDotNetVDBUtil.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 classejava.lang.Object