Citrix ADC

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 Fehlercodelement enthält, SOLLTE der Inhalt dieses Elements entweder einer der in SOAP 1.1 definierten Fehlercodes sein (Bereitstellung zusätzlicher Informationen im Detailelement) oder ein Qname, dessen Namespace von der spezifizierenden 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 Elementunte 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, sollte 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.

Interoperabilitätsprüfung von Webdiensten