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 donc besoin de System.Int32, etc. Pour afficher le mappage complet des noms qualifiés complets aux noms généralement utilisés dans VDB, voir DotNetVDBUtil.systemName2VDBShortName.Paramètres :
vdbMethodSig: signature de la méthode decallbacknumParams: 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. Les descripteurs de l'ancienne méthode et de la nouvelle méthode (soit le nombre d'arguments, le type d'argument et le type de retour) doivent être 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 donc besoin de System.Int32, etc. Pour afficher le mappage complet des noms qualifiés complets aux 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 des appels
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 donc besoin de System.Int32, etc. Pour afficher le mappage complet des noms qualifiés complets aux 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 les 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. Les descripteurs de l'ancienne méthode et de la nouvelle méthode (soit le nombre d'arguments, le type d'argument et le type de retour) doivent être 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 donc besoin de System.Int32, etc. Pour afficher le mappage complet des noms qualifiés complets aux 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 remplacementmpossible à une carteMdes positions de paramètre d'entier auxPatterns. Si les paramètres de constante de la chaîne dans les positions appropriées correspondent aux schémas dansMsur un site d'appel, un remplacement enmsera 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 donc besoin de System.Int32, etc. Pour afficher le mappage complet des noms qualifiés complets aux noms généralement utilisés dans VDB, voir DotNetVDBUtil.systemName2VDBShortName.Paramètres :
vdbMethodSig: 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: The methodisEntrypoint: 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: type déclaré du système global (par exemple,java.lang.String).Remarque : pour les applications .NET, nous avons besoin de type de VDB entièrement qualifié. A la place du type de paramètreint, nous avons donc besoin deSystem.Int32, etc. Pour afficher le mappage complet des noms qualifiés complets aux 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 (par exemple il est limité à la requête). Dans le cas contraire, le système global est limité entre des points d'entrée (par exemple il est limité à une « session » ou une « application »).
Retours :
- 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 (String, String, boolean)createGlobal, 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 :
toStringdans la classejava.lang.Object