¿Cuáles son las mejores prácticas para que nuestro equipo de desarrollo de productos cree la aplicación web más segura posible?

Mucho depende de la aplicación, pero aquí hay algunos puntos a considerar:

  • HTTPS (Doh!)
  • Nunca almacene contraseña cruda o incluso encriptada. Solo mantenga los hash salados. Use ambos niveles de cuenta + sal de nivel de aplicación
  • Mantenga sales a nivel de cuenta y úselas para generar cookies de sesión
  • Mantenga la sesión utilizando solo cookies seguras del lado del servidor. Una fórmula simple para generar la cookie es `Hash (Application Salt + Account Salt + ID de cuenta + Marca de tiempo) + ID de cuenta + Marca de tiempo`. Puede encriptar más esto, agregar más datos si es necesario. Esto garantiza que si las sales de la cuenta se restablecen o caduca el tiempo, la cookie se puede invalidar sin depender de factores externos.
  • Agregue autenticación en el middleware. Evite que la aplicación tenga que lidiar continuamente con ella.
  • Asegúrese de que cada declaración SQL se une de alguna manera con un registro que contiene el ID de la cuenta (identificado a través de la cookie de sesión)
  • Cambiar las sales a nivel de la cuenta al cerrar sesión o eventos apropiados
  • Nunca cree archivos sin marcas de tiempo + id de entidad en los nombres de archivo (por ejemplo, pdf, zip, etc.)
  • Cifrar todos los archivos almacenados (por ejemplo, AWS S3 tiene una opción para cifrar)
  • Sin acceso directo a ningún servidor. P.ej. encerrar en una VPC y usar Jumpbox / VPN para acceder
  • Evite habilitar CORS
  • Diseñe para que las API envíen solo los datos mínimos requeridos, nunca entidades del modelo completo
  • Asegúrese de que los servidores que no son de producción no puedan llegar a los servidores de producción
  • Implemente los secretos de la aplicación (contraseñas de bases de datos, tokens API, etc., sales de aplicaciones) por separado de la aplicación. No deberían residir en el repositorio de Git. Incluso sus desarrolladores no deberían tener fácil acceso a ellos.
  • Obtenga su aplicación probada con pluma