Poder ofrecer la información de valor que genera tu empresa de una forma eficiente y segura es tan importante que puede ser el punto de inflexión entre convertirla en un Unicornio o llevarla directamente a la ruina.
En el mundo de hoy, contar con una buena API que permita a terceros consumir tu información te va a permitir extender tu negocio más allá de lo que puedes ofrecer de forma individual. Es habitual conceder acceso a una parte pública de la información, pero otra parte sensible suele estar vinculada a algún contrato, cuota o condiciones particulares.
Una API abierta a terceros te permitirá abrir tu información y servicios a todo tipo de clientes, gestionando hasta dónde quieres que puedan llegar. Sólo tienes que ponerte a desarrollar en tu proceso de integración continua, darle caña a las pruebas unitarias, los test de integración, la documentación y todo lo que tu metodología dicte. Por fin tienes una API de calidad dispuesta a echar humo con miles de clientes y…
…entonces llego yo y te pregunto… ¿has tenido en cuenta la seguridad en el ciclo de vida de tu API?
Tu respuesta tiene una alta probabilidad de ser «ehhh…. no!». Lo normal es que sea así y que se hayan cometido errores de desarrollo que impliquen vulnerabilidades en nuestra API que puedan impactar en nuestro producto.
¿Como incorporo la seguridad a mi API?
Si no has empezado a desarrollarla, entonces te recomiendo que tengas en cuenta algún modelo como «Microsoft Security Development Lifecycle» (echando un vistazo aquí, aquí o aquí, aunque hablaremos de esto en breve) y lo hagas bien desde el principio.
Si ya tienes tu API funcionando, en la próxima entrada realizaremos una pequeña prueba que te puede ayudar a evaluar su seguridad.
En cualquier caso, deberías tener en cuenta siempre estos checks básicos:
1) Fase de Autenticación:
- Habilita tu API únicamente con SSL, todos los accesos debería ser https. Prohibe http o dale un uso meramente informativo.
- Nunca envíes usuarios, contraseñas, tokens… en la url.
2) Fase de Autorización:
- Pon especial atención en el escalado de privilegios tanto en horizontal como en vertical.
- Acentúa los controles en las peticiones que actualicen o eliminen información.
- Utiliza roles para administrar permisos de tus usuarios.
- Protege al máximo las funcionalidades destinadas a usuarios administrativos.
3) Gestión de sesión:
- Habilita un tiempo máximo de sesión (timeout).
- Asegúrate de tener medidas para invalidar tokens si es necesario.
4) Validación de entradas:
- Los ataques web habituales pueden afectar a tu API, así que pon atención en los conocidos ataques de injección, xss…
5) Codificación de salidas:
- Revisa bien la estructura de tu salida json, xml,…
- Inserta cabeceras de seguridad acordes al uso que se le va a dar a tu API.
Empieza por echar un vistazo a estas recomendaciones. En la próxima entrada seguiremos viendo detalles para tener tu API lo más segura posible. ¿Te lo vas a perder?