Actualmente estamos diseñando un servicio web que devuelve mensajes JSON . Las siguientes son las implementaciones planificadas para la seguridad del servicio:
-
Una Certificación SSL al servicio para la seguridad de la comunicación a través de Internet.
Seguridad de la capa de transporte (TLS) y su predecesor, Capa de sockets seguros (SSL), son protocolos criptográficos que proporcionan seguridad de comunicación a través de Internet. El servidor devuelve su identificación en forma de certificado digital. El certificado generalmente contiene el nombre del servidor, la autoridad de certificados de confianza (CA) y la clave de cifrado pública del servidor. - wikipedia.org
-
Cifrado de datos confidenciales mediante hashes y salt.
El cifrado está en Clave simétrica (Rijndael) : Rijndael se puede especificar con Tamaños de bloque y clave en cualquier múltiplo de 32 bits, con un mínimo de 128 bits. El tamaño de bloque tiene un máximo de 256 bits, pero el tamaño de clave no tiene un máximo teórico. - wikipedia.org
-
Autenticación del cliente utilizando validador de nombre de usuario y contraseña personalizados
WCF permite esquemas de autenticación de nombre de usuario y contraseña personalizados, también conocidos como validadores. - msdn.microsoft.com
El servicio será consumido por diferentes clientes y los datos deben estar protegidos. Los siguientes son los posibles riesgos [1] :
- Autenticación rota y administración de sesión : las funciones de la aplicación relacionadas con la autenticación y la administración de sesión a menudo no se implementan correctamente, lo que permite a los atacantes comprometer contraseñas, claves, tokens de sesión o explotar otras fallas de implementación para asumir las identidades de otros usuarios.
- Referencias de objetos directos inseguros : una referencia de objeto directo se produce cuando un desarrollador expone una referencia a un objeto de implementación interno, como un archivo, un directorio o una clave de base de datos. Sin una verificación de control de acceso u otra protección, los atacantes pueden manipular estas referencias para acceder a datos no autorizados.
- Configuración errónea de la seguridad : la buena seguridad requiere tener una configuración segura definida e implementada para la aplicación, los marcos, el servidor de aplicaciones, el servidor web, el servidor de bases de datos y la plataforma. Todas estas configuraciones deben definirse, implementarse y mantenerse, ya que muchas no se envían con valores predeterminados seguros. Esto incluye mantener todo el software actualizado, incluidas todas las bibliotecas de códigos utilizadas por la aplicación.
- Almacenamiento criptográfico inseguro : muchas aplicaciones web no protegen adecuadamente los datos confidenciales, como tarjetas de crédito, SSN y credenciales de autenticación, con el cifrado o hashing adecuado. Los atacantes pueden robar o modificar dichos datos protegidos de forma deficiente para realizar robos de identidad, fraudes con tarjetas de crédito u otros delitos.
- Protección insuficiente de la capa de transporte : las aplicaciones con frecuencia no autentican, cifran y protegen la confidencialidad y la integridad del tráfico de red sensible. Cuando lo hacen, a veces admiten algoritmos débiles, utilizan certificados caducados o no válidos, o no los usan correctamente.
Si un ataque ha logrado penetrar en nuestro servicio, nuestra empresa sufrirá una gran pérdida. Los siguientes son los posibles resultados de un ataque exitoso:
- Cualquier información manipulada de cualquier manera maliciosa podría causar una gran pérdida en las ganancias de nuestra empresa.
- El acceso de clientes no autenticados les permite cambiar y agregar datos maliciosos y / o ralentizar o interrumpir el servicio, lo que hace que el servicio sea inaccesible.
¿Es nuestra implementación planificada para la seguridad del servicio suficiente para prevenir estos riesgos? ¿Qué otros problemas de seguridad debemos considerar?
[1] El nombre y la definición del riesgo se basan en Riesgos de seguridad de la aplicación OWASP .