Interoperabilitätsprüfung von Webdiensten
Bei der WS-I-Prüfung (Web Services Interoperability) werden sowohl Anforderungen als auch Antworten auf die Einhaltung des WS-I-Standards untersucht und die Anforderungen und Antworten blockiert, die diesen Standard nicht erfüllen. Der Zweck der WS-I-Prüfung besteht darin, Anforderungen zu blockieren, die möglicherweise nicht mit anderen XML interagieren. Ein Angreifer kann Inkonsistenzen in der Interoperabilität verwenden, um einen Angriff auf Ihre XML-Anwendung zu starten.
Wenn Sie den Assistenten oder die GUI verwenden, können Sie im Dialogfeld Interoperabilitätsprüfung für Webdienste ändern auf der Registerkarte Allgemein die Aktionen Blockieren, Protokollieren, Statistiken und Lernen aktivieren oder deaktivieren.
Wenn Sie die Befehlszeilenschnittstelle verwenden, können Sie den folgenden Befehl eingeben, um die Interoperabilitätsprüfung für Webdienste zu konfigurieren:
set appfw profile <name> -xmlWSIAction [block] ][log] [learn] [stats] [none]
Um einzelne Web Services Interoperabilitätsregeln zu konfigurieren, müssen Sie die GUI verwenden. Wählen Sie im Dialogfeld Interoperabilitätsprüfung für Webdienste auf der Registerkarte Prüfungen eine Regel aus, und klicken Sie auf Aktivieren oder Deaktivieren, um die Regel zu aktivieren oder zu deaktivieren. Sie können auch auf Öffnen klicken, um das Meldungsfeld Webdienst-Interoperabilitätsdetails für diese Regel zu öffnen. Im Meldungsfeld werden schreibgeschützte Informationen zur Regel angezeigt. Sie können keine dieser Regeln ändern oder andere Konfigurationsänderungen vornehmen.
Bei der WS-I-Prüfung werden die in WS-I Basic Profile 1.0 aufgeführten Regeln verwendet. WS-I bietet Best Practices für die Entwicklung interoperabler Web Services-Lösungen. WS-I-Prüfungen werden nur für SOAP-Nachrichten durchgeführt.
Eine Beschreibung der einzelnen WSI-Standardregeln finden Sie im Folgenden:
Regel | Beschreibung |
---|---|
BP1201 | Der Nachrichtentext sollte ein soap:envelope mit Namespace sein. |
R1000 | Wenn ein ENVELOPE ein Fehler ist, darf das soap:Fault-Element NUR die untergeordneten Elemente faultcode, faultstring, faultactor und detail haben. |
R1001 | Wenn ein ENVELOPE ein Fehler ist, müssen die untergeordneten Elemente des Elements SOAP:Fault nicht qualifiziert sein. |
R1003 | Ein RECEIVER MUSS Fehlermeldungen akzeptieren, die eine beliebige Anzahl qualifizierter oder nicht qualifizierter Attribute aufweisen, einschließlich Null, die auf dem Detailelement angezeigt werden. Der Namespace von qualifizierten Attributen kann alles andere als der Namespace des qualifizierten Dokumentelements Envelope sein. |
R1004 | Wenn ein ENVELOPE ein faultcode-Element enthält, muss der Inhalt dieses Elements entweder einer der in SOAP 1.1 definierten Fehlercodes sein (ggf. zusätzliche Informationen im Detailelement liefern) oder ein Qname, dessen Namespace durch die spezifizierende Autorität des Fehlers gesteuert wird (in dieser Reihenfolge der Präferenz). |
R1005 | Ein ENVEL MUSS NICHT SOAP:EncodingStyle-Attribut für eines der Elemente enthalten, deren Namespace dem Namespace des qualifizierten Dokumentelements Envelope entspricht. |
R1006 | Ein ENVELOPE darf NICHT soap:encodingStyle-Attribute für ein Element enthalten, das ein untergeordnetes Element von soap:Body ist. |
R1007 | Ein in einer rpc-literal-Bindung beschriebener ENVELOPE darf NICHT das soap:encodingStyle-Attribut für ein Element enthalten, das ein Enkelkind von soap:Body ist. |
R1011 | Ein ENVELOPE darf NICHT untergeordnete Elemente von soap:Envelope nach dem Element soap:Body haben. |
R1012 | Eine MESSAGE MUSS als UTF-8 oder UTF-16 serialisiert werden. |
R1013 | Ein ENVELOPE, der ein soap:mustUnderstand-Attribut enthält, DARF nur die lexikalischen Formulare 0 und 1 verwenden. |
R1014 | Die untergeordneten Elemente des soap:Body-Elements in einem ENVELOPE müssen namespace-qualifiziert sein. |
R1015 | Ein RECEIVER MUSS einen Fehler erzeugen, wenn ein Envelope auftritt, dessen Dokumentelement nicht SOAP:Envelope ist. |
R1031 | Wenn ein ENVELOPE ein faultcode-Element enthält, darf der Inhalt dieses Elements NICHT die SOAP 1.1-Punktnotation verwenden, um die Bedeutung des Fehlers zu verfeinern. |
R1032 | Die Elemente soap:Envelope, soap:Header und soap:Body in einem ENVELOPE dürfen NICHT Attribute im gleichen Namespace wie das des qualifizierten Dokumentelements Envelope haben |
R1033 | Ein ENVELOPE sollte NICHT die Namespace-Deklaration enthalten: xmlns:xml=http://www.w3.org/XML/1998/namespace.
|
R1109 | Der Wert des SOAPAction HTTP-Header-Feldes in einer HTTP-Anforderung MESSAGE MUSS eine Zeichenfolge in Anführungszeichen sein. |
R1111 | Eine INSTANCE SOLL einen 200-OK-HTTP-Statuscode für eine Antwortnachricht verwenden, die einen Envelope enthält, der kein Fehler ist. |
R1126 | Eine INSTANCE MUSS einen HTTP-Statuscode 500 Internal Server Error zurückgeben, wenn der Antwort-Envelope ein Fehler ist. |
R1132 | Eine HTTP-Anforderung MESSAGE MUSS die HTTP POST-Methode verwenden. |
R1140 | Eine Nachricht sollte mit HTTP/1.1 gesendet werden. |
R1141 | Eine MESSAGE MUSS mit HTTP/1.1 oder HTTP/1.0 gesendet werden. |
R2113 | Ein Envelope MUSS NICHT das soapenc:arrayType -Attribut enthalten. |
R2211 | Ein Envelope, der mit einer rpc-Literal Bindung beschrieben wurde, MUSS NICHT das xsi:nil -Attribut mit dem Wert 1 oder true für die Teile-Accessoren haben. |
R2714 | Bei unidirektionalen Operationen darf eine INSTANCE NICHT eine HTTP-Antwort zurückgeben, die einen Envelope enthält. Insbesondere muss der HTTP-Antwort-Entity-Body leer sein. |
R2729 | Ein Envelope, der mit einer rpc-Literal Bindung beschrieben wird, die eine Antwort ist, MUSS ein Wrapper-Element haben, dessen Name der entsprechende wsdl:Operationsname ist, der mit dem StringResponse versehen ist. |
R2735 | Ein Envelope, der mit einer rpc-Literal Bindung beschrieben wird, MUSS die Teilzugriffselemente für Parameter und Rückgabewerte in keinem Namespace platzieren. |
R2738 | Ein Envelope MUSS alle soapbind:Header enthalten, die auf einer wsdl:input oder wsdl:output einer wsdl:operation einer wsdl:binding angegeben sind, die sie beschreibt. |
R2740 | Eine wsdl:Bindung in einer DESCRIPTION sollte ein soapbind:fault enthalten, der jeden bekannten Fehler beschreibt. |
R2744 | Eine HTTP-Anforderung MESSAGE MUSS ein SOAPAction-HTTP-Header-Feld mit einem in Anführungszeichen angegebenen Wert enthalten, der dem Wert des soapAction-Attributs von soapbind:operation entspricht, falls in der entsprechenden WSDL-Beschreibung vorhanden ist. |