Contrôle de l’interopérabilité des services Web
La vérification de l’interopérabilité des services Web (WS-I) examine à la fois les demandes et les réponses pour vérifier la conformité à la norme WS-I et bloque les demandes et réponses qui ne respectent pas cette norme. Le but de la vérification WS-I est de bloquer les requêtes qui pourraient ne pas interagir avec d’autres XML de manière appropriée. Un attaquant peut utiliser des incohérences dans l’interopérabilité pour lancer une attaque sur votre application XML.
Si vous utilisez l’assistant ou l’interface graphique, dans la boîte de dialogue Modifier le contrôle de l’interopérabilité des services Web, sous l’onglet Général, vous pouvez activer ou désactiver les actions Bloquer, Journal, Statistiques et Apprendre.
Si vous utilisez l’interface de ligne de commande, vous pouvez entrer la commande suivante pour configurer la vérification d’interopérabilité des services Web :
set appfw profile <name> -xmlWSIAction [block] ][log] [learn] [stats] [none]
Pour configurer des règles d’interopérabilité des services Web individuelles, vous devez utiliser l’interface graphique. Sous l’onglet Vérifications de la boîte de dialogue Modifier le contrôle de l’interopérabilité des services Web, sélectionnez une règle et cliquez sur Activer ou Désactiver pour activer ou désactiver la règle. Vous pouvez également cliquer sur Ouvrir pour ouvrir la boîte de message Détail de l’interopérabilité des services Web pour cette règle. La boîte de message affiche des informations en lecture seule sur la règle. Vous ne pouvez pas modifier ou apporter d’autres modifications de configuration à l’une de ces règles.
La vérification WS-I utilise les règles répertoriées dans WS-I Basic Profile 1.0. WS-I propose les meilleures pratiques pour le développement de solutions de services Web interopérables. Les vérifications WS-I sont effectuées uniquement sur les messages SOAP.
La description de chaque règle standard WSI est fournie ci-dessous :
Règle | Description |
---|---|
BP1201 | Le corps du message doit être un soap:envelope avec espace de noms. |
R1000 | Lorsqu’une ENVELOPE est une erreur, l’élément SOAP:Fault NE DOIT PAS avoir des enfants d’élément autres que faultcode, faultstring, faultactor et detail. |
R1001 | Lorsqu’une ENVELOPE est une erreur, les enfants de l’élément SOAP:Fault DOIVENT être non qualifiés. |
R1003 | UN RÉCEPTEUR DOIT accepter les messages d’erreur qui comportent un certain nombre d’attributs qualifiés ou non qualifiés, y compris zéro, apparaissant sur l’élément de détail. L’espace de noms des attributs qualifiés peut être autre que l’espace de noms de l’élément de document qualifié Envelope. |
R1004 | Lorsqu’une ENVELOPE contient un élément de code faultcode, le contenu de cet élément doit être soit l’un des codes d’erreur définis dans SOAP 1.1 (fournissant des informations supplémentaires si nécessaire dans l’élément detail), soit un Qname dont l’espace de noms est contrôlé par l’autorité de spécification de la faute (dans cet ordre de préférence). |
R1005 | Une ENVELOPE NE DOIT PAS contenir l’attribut SOAP:encodingStyle sur l’un des éléments dont l’espace de noms est le même que l’espace de noms de l’élément de document qualifié Envelope. |
R1006 | Une ENVELOPE NE DOIT PAS contenir les attributs SOAP:EncodingStyle sur un élément qui est un enfant de SOAP:Body. |
R1007 | Une ENVELOPE décrite dans une liaison littérale rpc-NE DOIT PAS contenir l’attribut SOAP:encodingStyle sur un élément qui est un petit-fils de Soap:body. |
R1011 | Une ENVELOPE NE DOIT PAS avoir d’enfant élément de SOAP:Envelope suivant l’élément SOAP:Body. |
R1012 | Un MESSAGE DOIT être sérialisé en UTF-8 ou UTF-16. |
R1013 | Une ENVELOPE contenant un attribut SOAP:MustUnderderderit DOIT utiliser uniquement les formes lexicales 0 et 1. |
R1014 | Les enfants de l’élément SOAP:body dans une ENVELOPE DOIVENT être qualifiés d’espace de noms. |
R1015 | Un RECEPTEUR DOIT générer une erreur s’il rencontre une enveloppe dont l’élément de document n’est pas SOAP:Envelope. |
R1031 | Lorsqu’une ENVELOPE contient un élément de code faultcode, le contenu de cet élément ne doit PAS utiliser la notation des points SOAP 1.1 pour affiner la signification de la faute. |
R1032 | Les éléments SOAP:envelope, SOAP:header et SOAP:body d’une ENVELOPE NE DOIVENT PAS avoir des attributs dans le même espace de noms que celui de l’élément de document qualifié Envelope |
R1033 | Une ENVELOPE NE DEVRAIT PAS contenir la déclaration d’espace de noms :xmlns:xml=http://www.w3.org/XML/1998/namespace.
|
R1109 | La valeur du champ d’en-tête HTTP SoapAction dans une requête HTTP MESSAGE DOIT être une chaîne entre guillemets. |
R1111 | Une INSTANCE DEVRAIT utiliser un code d’état HTTP 200 OK sur un message de réponse contenant une enveloppe qui n’est pas une erreur. |
R1126 | Une INSTANCE DOIT renvoyer un code d’état HTTP d’erreur serveur interne 500 si l’enveloppe de réponse est une erreur. |
R1132 | Une requête HTTP MESSAGE DOIT utiliser la méthode HTTP POST. |
R1140 | UN MESSAGE DEVRAIT être envoyé en utilisant HTTP/1.1. |
R1141 | Un MESSAGE DOIT être envoyé en utilisant HTTP/1.1 ou HTTP/1.0. |
R2113 | Une ENVELOPE NE DOIT PAS inclure l’attribut SOAPENC:ArrayType. |
R2211 | Une ENVELOPE décrite avec une liaison littérale rpc-NE DOIT PAS avoir l’attribut xsi:nil avec une valeur de 1 ou true sur les accesseurs de pièce. |
R2714 | Pour les opérations à sens unique, une INSTANCE NE DOIT PAS renvoyer une réponse HTTP contenant une enveloppe. Plus précisément, l’entité de réponse HTTP doit être vide. |
R2729 | Une ENVELOPE décrite avec une liaison littérale rpc-qui est une réponse DOIT avoir un élément wrapper dont le nom est le nom wsdl:operation correspondant suffixé avec StringResponse. |
R2735 | Une ENVELOPE décrite avec une liaison littérale rpc-DOIT placer les éléments d’accesseur de pièce pour les paramètres et renvoyer la valeur dans aucun espace de noms. |
R2738 | Une ENVELOPE DOIT inclure tous les soapbind:headers spécifiés sur un wsdl:input ou wsdl:output d’un wsdl:operation d’un wsdl:binding qui le décrit. |
R2740 | Un wsdl:binding dans une DESCRIPTION DEVRAIT contenir un soapbind:fault décrivant chaque défaut connu. |
R2744 | Une requête HTTP MESSAGE DOIT contenir un champ d’en-tête HTTP SoapAction avec une valeur entre guillemets égale à la valeur de l’attribut SoapAction de soapbind:operation, s’il est présent dans la description WSDL correspondante. |