Este artículo ha sido traducido automáticamente. (Aviso legal)
Verificación de interoperabilidad de servicios web
La comprobación de interoperabilidad de servicios web (WS-I) examina tanto las solicitudes como las respuestas para comprobar si cumplen con el estándar WS-I y bloquea las solicitudes y respuestas que no cumplen con este estándar. El propósito de la comprobación WS-I es bloquear las solicitudes que podrían no interactuar correctamente con otro XML. Un atacante puede utilizar incoherencias en la interoperabilidad para lanzar un ataque contra su aplicación XML.
Si utiliza el asistente o la GUI, en el cuadro de diálogo Modificar la comprobación de interoperabilidad de los servicios web, en la ficha General, puede habilitar o inhabilitar las acciones Bloquear, Registrar, Estadísticas y Aprender.
Si usa la interfaz de línea de comandos, puede introducir el siguiente comando para configurar la comprobación de interoperabilidad de los servicios web:
set appfw profile <name> -xmlWSIAction [block] ][log] [learn] [stats] [none]
Para configurar reglas de interoperabilidad de servicios web individuales, debe usar la GUI. En la ficha Comprobaciones del cuadro de diálogo Modificar la comprobación de interoperabilidad de los servicios web, seleccione una regla y haga clic en Habilitar o inhabilitar para habilitar o inhabilitar la regla. También puede hacer clic en Abrir para abrir el cuadro de mensaje Detalles de interoperabilidad de servicios web para esa regla. El cuadro de mensaje muestra información de solo lectura sobre la regla. No puede modificar ni realizar otros cambios de configuración en ninguna de estas reglas.
La comprobación de WS-I utiliza las reglas enumeradas en el perfil básico de WS-I 1.0. WS-I ofrece las mejores prácticas para desarrollar soluciones de servicios web interoperables. Las comprobaciones de WS-I solo se realizan en los mensajes SOAP.
A continuación se proporciona una descripción de cada regla estándar de WSI:
Rule | Descripción |
---|---|
BP1201 | El cuerpo del mensaje debe ser un soap:envelope con un espacio de nombres. |
R1000 | Cuando un ENVELOPE es un fallo, el elemento SOAP:fault NO DEBE tener elementos secundarios distintos de faultcode, faultstring, faultactor y detail. |
R1001 | Cuando un ENVELOPE es una falla, los elementos secundarios del elemento SOAP:Fault DEBEN estar descalificados. |
R1003 | UN RECEPTOR DEBE aceptar los mensajes de error que tengan cualquier número de atributos calificados o no calificados, incluido cero, que aparezcan en el elemento de detalle. El espacio de nombres de los atributos cualificados puede ser cualquier cosa que no sea el espacio de nombres del elemento de documento cualificado Envelope. |
R1004 | Cuando un ENVELOPE contiene un elemento de código de error, el contenido de ese elemento debe ser uno de los códigos de error definidos en SOAP 1.1 (proporcionando información adicional si es necesario en el elemento de detalle) o un nombre Q cuyo espacio de nombres esté controlado por la autoridad que especifica el error (en ese orden de preferencia). |
R1005 | Un ENVELOPE NO DEBE contener el atributo soap:encodingStyle en ninguno de los elementos cuyo espacio de nombres sea el mismo que el espacio de nombres del elemento de documento cualificado Envelope. |
R1006 | Un ENVELOPE NO DEBE contener los atributos soap:encodingStyle en ningún elemento que sea hijo de soap:Body. |
R1007 | Un ENVELOPE descrito en un enlace literal rpc NO DEBE contener el atributo soap:encodingStyle en ningún elemento que sea nieto de soap:body. |
R1011 | Un ENVELOPE NO DEBE tener ningún elemento secundario de SOAP:Envelope después del elemento SOAP:Body. |
R1012 | UN MENSAJE DEBE estar serializado como UTF-8 o UTF-16. |
R1013 | Un ENVELOPE que contenga un atributo soap:mustUnderstand SOLO DEBE usar las formas léxicas 0 y 1. |
R1014 | Los elementos secundarios del elemento soap:body de un ENVELOPE DEBEN estar calificados para un espacio de nombres. |
R1015 | UN RECEPTOR DEBE generar un error si encuentra un sobre cuyo elemento de documento no sea SOAP:Envelope. |
R1031 | Cuando un ENVELOPE contiene un elemento de código de error, el contenido de ese elemento NO debe utilizar la notación de puntos de SOAP 1.1 para refinar el significado de la falla. |
R1032 | Los elementos SOAP:Envelope, SOAP:Header y SOAP:body de un ENVELOPE NO DEBEN tener atributos en el mismo espacio de nombres que el elemento de documento cualificado Envelope |
R1033 | Un SOBRE NO DEBE contener la declaración del espacio de nombres: xmlns:xml=http://www.w3.org/XML/1998/namespace.
|
R1109 | El valor del campo de encabezado HTTP de SoapAction en un MENSAJE de solicitud HTTP DEBE ser una cadena entre comillas. |
R1111 | Una INSTANCIA DEBE usar un código de estado HTTP 200 OK en un mensaje de respuesta que contenga un sobre que no sea un error. |
R1126 | Una INSTANCIA DEBE devolver un código de estado HTTP de 500 errores internos del servidor si el sobre de respuesta es un error. |
R1132 | UN MENSAJE de solicitud HTTP DEBE utilizar el método HTTP POST. |
R1140 | SE DEBE ENVIAR UN MENSAJE mediante HTTP/1.1. |
R1141 | EL MENSAJE DEBE ENVIARSE MEDIANTE HTTP/1.1 o HTTP/1.0. |
R2113 | Un SOBRE NO DEBE incluir el atributo soapEnc:ArrayType. |
R2211 | Un ENVELOPE descrito con un enlace literal rpc NO DEBE tener el atributo xsi:nil con un valor de 1 o verdadero en los descriptores de acceso parciales. |
R2714 | Para las operaciones unidireccionales, una INSTANCIA NO DEBE devolver una respuesta HTTP que contenga un sobre. En concreto, el cuerpo-entidad de la respuesta HTTP debe estar vacío. |
R2729 | Un ENVELOPE descrito con un enlace literal rpc que sea una respuesta DEBE tener un elemento contenedor cuyo nombre sea el nombre wsdl:operation correspondiente con el sufijo stringResponse. |
R2735 | Un ENVELOPE descrito con un enlace literal rpc DEBE colocar los elementos de acceso de la parte para los parámetros y devolver el valor en ningún espacio de nombres. |
R2738 | Un ENVELOPE DEBE incluir todos los encabezados soapbind:specified en un wsdl:input o wsdl:output de una operación wsdl:de un wsdl:binding que lo describa. |
R2740 | Un wsdl:binding en una DESCRIPCIÓN DEBE contener un soapbind:fault que describa cada error conocido. |
R2744 | Un mensaje de solicitud HTTP DEBE contener un campo de encabezado HTTP SoapAction con un valor comillas igual al valor del atributo SoapAction de soapbind:operation, si está presente en la descripción WSDL correspondiente. |