Servicios web: seguridad
La seguridad es fundamental para los servicios web. Sin embargo, ni las especificaciones XML-RPC ni SOAP establecen requisitos explícitos de seguridad o autenticación.
Hay tres problemas de seguridad específicos con los servicios web:
- Confidentiality
- Authentication
- Seguridad de la red
Confidencialidad
Si un cliente envía una solicitud XML a un servidor, ¿podemos asegurarnos de que la comunicación sea confidencial?
La respuesta está aquí:
- XML-RPC y SOAP se ejecutan principalmente sobre HTTP.
- HTTP tiene soporte para Secure Sockets Layer (SSL).
- La comunicación se puede cifrar a través de SSL.
- SSL es una tecnología probada y ampliamente implementada.
Un solo servicio web puede constar de una cadena de aplicaciones. Por ejemplo, un gran servicio puede unir los servicios de otras tres aplicaciones. En este caso, SSL no es adecuado; los mensajes deben cifrarse en cada nodo a lo largo de la ruta del servicio, y cada nodo representa un posible eslabón débil en la cadena. Actualmente, no existe una solución acordada para este problema, pero una solución prometedora es el estándar de cifrado XML de W3C. Este estándar proporciona un marco para cifrar y descifrar documentos XML completos o solo partes de un documento XML. Puede consultarlo en www.w3.org/Encryption
Autenticación
Si un cliente se conecta a un servicio web, ¿cómo identificamos al usuario? ¿Está autorizado el usuario a utilizar el servicio?
Se pueden considerar las siguientes opciones, pero no existe un consenso claro sobre un esquema de autenticación sólido.
HTTP incluye soporte integrado para la autenticación básica y implícita y, por lo tanto, los servicios pueden protegerse de la misma manera que los documentos HTML están protegidos actualmente.
La firma digital SOAP (SOAP-DSIG) aprovecha la criptografía de clave pública para firmar digitalmente los mensajes SOAP. Permite al cliente o servidor validar la identidad de la otra parte. Compruébelo en www.w3.org/TR/SOAP-dsig .
La Organización para el Avance de los Estándares de Información Estructurada (OASIS) está trabajando en el Lenguaje de marcado de afirmación de seguridad (SAML).
Seguridad de la red
Actualmente, no existe una respuesta fácil a este problema y ha sido objeto de mucho debate. Por ahora, si realmente tiene la intención de filtrar los mensajes SOAP o XML-RPC, una posibilidad es filtrar todas las solicitudes HTTP POST que establecen su tipo de contenido en texto / xml.
Otra alternativa es filtrar el atributo de encabezado HTTP SOAPAction. Los proveedores de firewall también están desarrollando herramientas diseñadas explícitamente para filtrar el tráfico de servicios web.