Intégration d'un nouveau gestionnaire Framework for Frameworks de services Web au scanner personnalisé WSDL (Web Service Description Language) existant
Pourquoi et quand exécuter cette tâche
Lors de l'examen d'une application JAX-RS ou JAX-WS avec AppScan® Source, vous devez vérifier que vous pouvez capturer tous les points d'entrée de service Web, de sorte que vous ne manquiez aucune vulnérabilité dans votre application. Ce document décrit une technique permettant d'y parvenir. Il explique les étapes à suivre pour intégrer un nouveau gestionnaire Framework for Frameworks (F4F) qui sert à analyser les cadres de service Web à l'aide du scanner personnalisé WSDL (Web Service Description Language).
Ce travail est nécessaire pour que le scanner personnalisé WSDL puisse différencier les points d'entrée du service Web qui ont déjà été découverts par ce nouveau gestionnaire F4F et ceux qui existent dans le fichier WSDL. Grâce à ces informations, le scanner personnalisé WSDL va éliminer les constatations de configuration qui ont déjà été analysées par ce nouveau gestionnaire F4F.
Connexion du gestionnaire F4F de services Web au scanner personnalisé WSDL
Avant de commencer
Procédure
- Ajoutez une dépendance à partir de votre plug-in à
com.ibm.appscan.frameworks.wsdl.util
, qui comprend des API d'aide programmable pour signaler les services trouvés. Elle existe également dans le dossier walalib. - Dans le gestionnaire principal (qui étend la classe
F4FHandler
), au début de la méthodehandleApp()
ajoutez les lignes suivantes :String filePath = WSDLReportingUtil.getServicesFilePath (getFrameworksInput().getFileLocs()); if (filePath!=null) { WSDLReportingUtil.initXmlDocument(filePath); }
Ces lignes créent un fichier temporaire qui sera utilisé par le scanner personnalisé WSDL.
- A la fin de la méthode
handleApp()
, ajoutez cette ligne pour vous assurer que tous les services indiqués sont enregistrés avant que le gestionnaire F4F ne se ferme :WSDLReportingUtil.saveXmlDocument();
- Pour signaler un service, ajoutez un appel à l'une des API suivantes depuis l'API
WSDLReportingUtil
:reportService(String targetNameSpace, String serviceName, String methodSignature)
reportService(String targetNamespace, String serviceName, String operationName, ArrayList<String> wsdlParams)
où :
targetNameSpace
est l'espace de nom cible du service. Dans JAX-WS, par exemple, il se trouve dans les annotations ou il porte le même nom que le package.serviceName
est le nom du service. Il se trouve dans les annotations ou il porte le même nom que la classe de service.methodSignature
est la signature de la méthode provenant du fichier WSDL, simplifiée.operationName
est le nom de la méthode, qui est lié à un nom d'opération dans un type de port du fichier WSDL.wsdlParams
est la liste des types de paramètre au format WSDL simple.
- Actuellement, le scanner personnalisé WSDL fonctionne de façon autonome ou dans le cadre d'un examen Java/JSP. Si le nouveau gestionnaire de service Web F4F est conçu pour travailler avec un autre langage que Java™ (.NET, par exemple), assurez-vous que le scanner personnalisé WSDL est appelé à l'aide du type d'examen adéquat en procédant comme suit :
Résultats
Mappage de signature
Pourquoi et quand exécuter cette tâche
Le scanner personnalisé WSDL va essayer de faire correspondre les méthodes signalées avec les services WSDL, les types de ports WSDL et les opérations WSDL correspondantes. C'est pourquoi les services Web sont indiqués au format WSDL. Certaines simplifications ont été ajoutées pour faciliter la compréhension de certains points :
- Pour tous les types primitifs XSD, il est inutile d'ajouter l'espace de nom cible. A la place, utilisez simplement le nom (par exemple,
string
,int
,float
,double
). - Pour les collections et les tableaux,
[]
est ajouté après le type (par exemplestring[]
,int[]
). - Pour les types de classes qui seront mappés vers des types complexes XSD (à l'aide de JAX-B ou de toute autre technologie), le type va s'afficher comme suit :
http//my-types/myxsdnamespace/:Customer
L'espace de nom doit être disponible dans l'annotation Java™. S'il n'est pas disponible dans l'annotation Java™, il doit correspondre à l'espace de nom du service appelant ou au nom de package, selon l'implémentation de l'infrastructure.
Si vous ne savez pas à quoi doit ressembler la signature attendue, exécutez depuis AppScan® Source un examen WSDL des fichiers WSDL eux-mêmes. Cela permet de générer des constatations pour toutes les opérations qui dépendent des services WSDL. Cliquez sur chaque constatation pour afficher la signature de la méthode dans la vue Détails des constatations.