La seguridad se comporta como cualquier otra propiedad de calidad :
Si su software no es confiable y le causa daño a su cliente, puede ser demandado por una indemnización por daños y / o una mala cobertura de la prensa. Lo mismo es cierto para los problemas de seguridad.
Al igual que otras propiedades de calidad, el uso de una gran cantidad de dinero para eventos de una sola vez, no es probable que tenga un efecto duradero. Asegurar la calidad a largo plazo requiere estructuras que la respalden.
Para ser más concretos: una capacitación de seguridad general de 3 días para todos los desarrolladores puede ser bastante costosa, pero probablemente no sea una forma efectiva de gastar el dinero.
Un enfoque a largo plazo puede ser este: designe un pequeño número de expertos en seguridad y edúquelos (por ejemplo, permitiéndoles visitar cursos, obtener consultas externas, ...). Este grupo lo hará
- identifique los aspectos de seguridad que son importantes para sus compañeros desarrolladores (por ejemplo, un desarrollador de aplicaciones web que use Java debería centrarse en OWASP en lugar de desbordamientos de búfer)
- apoyar al grupo de desarrollo de arquitectura para minimizar el potencial de errores relacionados con la seguridad
- enseñe a los otros desarrolladores sobre aspectos de seguridad basados en la arquitectura concreta que utilizan en su empresa
- hacer revisiones de código
- fomentar discusiones sobre aspectos de seguridad.
Permítanme darles un ejemplo: una empresa desarrolla una aplicación web utilizando el marco Java Server Faces basado en componentes. En JSF, los componentes de interfaz de usuario generan código HTML y JavaScript. Por lo tanto, los desarrolladores de componentes deben conocer XSS y evitar toda entrada.
Los desarrolladores de funciones empresariales utilizan estos componentes de interfaz de usuario. No necesitan escribir código HTML, por lo que no necesitan escapar de la entrada (y no pueden hacerlo porque escapar es la tarea de los componentes). Pero los desarrolladores de funciones de negocios deben entender cómo usar los componentes de forma segura (por ejemplo, no generan código HTML por sí mismos para eludir los componentes).