¿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

More Interesting

¿Por qué es la certificación de gestión estratégica de productos la más importante?

¿Qué debo hacer como desarrollador cuando el gerente de producto ya no cree en el producto?

¿Cuáles son los principales pasos para desarrollar un producto? ¿Qué es crítico para la funcionalidad de un producto (servidores, etc.)?

En el desarrollo de software, ¿por qué es importante medir la velocidad?

Me pusieron a cargo de convertir los datos que mi empresa genera en un producto. ¿Qué necesito saber?

¿Cómo se decide el costo de un producto?

¿Cuáles son los componentes principales de una hoja de ruta del producto?

Cómo encontrar un desarrollador de productos en los EE. UU.

¿La diferencia entre el tiempo de comercialización y el tiempo de uso es la misma para los productos de tecnología de la información que para otros tipos de productos?

Si una compañía lanzara un nuevo producto que fue desarrollado en secreto usando tecnología alienígena, ¿qué tan avanzado tendría que ser para informar a otras compañías que era de naturaleza alienígena y no solo una muy buena investigación y desarrollo de esta compañía?

¿Debería un gerente de producto ser más un líder que no tiene manos, o también estar listo para ensuciarse las manos?

En el proceso de desarrollo, ¿quién aprobará la codificación para comenzar la producción de una aplicación?

¿Cuál es la historia detrás de GitHub? ¿Qué pasó por diseño y qué pasó por accidente?

¿Qué herramientas utiliza el equipo de productos de Quora para la generación de ideas, investigación de mercado, desarrollo de productos, gestión de productos y proyectos?

¿Qué producto / servicio cambió tu vida? ¿Por qué?