3

Técnicas y Prácticas de Desarrollo Seguro

20180717_SDLC.jpg

Técnicas de Desarrollo Seguro

Validación de entrada

  • Verificar que el tipo de dato introducido coincide con el dato que esperamos.
  • Verificar que se ha introducido información en aquellos casos que sea obligatorio.
  • Verificar el contenido de la información introducida en busca de estructuras que puedan romper nuestro código.

Advertencias del compilador

  • Verificar que no existen.
  • Solucionar todos los conflictos antes de pasar el programa a producción.

Usar políticas de seguridad

  • Aplicar niveles de acceso a las secciones de la aplicación que así lo requieran.

Sencillez

  • Evitar estructuras de datos complejas.
  • Evitar clases y métodos complejos.
  • Cada clase debe tener una única funcionalidad.
  • Cada método debe tener una única funcionalidad.
  • Los métodos deben ser de reducido tamaño.

Denegar acceso por defecto

  • Aplicar permisos partiendo de la negación de todos los permisos.
  • Conceder permisos únicamente a los usuarios que tengan derecho a dicho permiso.

Sanear datos

  • Antes de pasar datos a otro sistema verificar el contenido de los mismos.
  • Escapar caracteres especiales antes de almacenar en bases de datos.

Aplicar capas de seguridad

  • Estructurar la aplicación en capas

Usar técnicas que garanticen la calidad

  • Realizar test de aplicación
  • Auditar el código fuente
    Estándar de codificación segura
  • Patrones de diseño

Prácticas de Desarrollo Seguro

Añadir trazas al código

  • Logs que informen de los errores que se pueden ir produciendo

Eliminación del código muerto

  • Verificar las secciones de código que no se usan en el programa para eliminarlas.
  • No incluir clases que no se usan
  • No declarar variables que no se utilicen

Independencia de la base de datos

  • Programar usando alguna librería que permita cambiar de base de datos sin que el código sufra alteración alguna.

Alto rendimiento

  • Realizar pruebas de carga
  • Realizar pruebas de uso de recursos

Limitar el uso de objetos mutables

Limitar la herencia de clases

Limitar el uso de variables y métodos públicos

  • Exponer únicamente los métodos y variables estrictamente necesarios para el desempeño de la funcionalidad de la clase.

Ayudar al recolector de basura

  • Establecer a null aquellas variables que sepamos que no se van a volver a usar
  • Cerrar las conexiones de forma manual
  • Destruir los objetos de forma manual

Uso de bloques try/catch de forma consciente

  • Controlar todas las excepciones que puedan aparecer en una aplicación
  • Dar un tratamiento adecuado a cada tipo de excepción
  • Registrar los errores para ayudar con el proceso de detección de fallos
  • Limitar la información que se muestra al usuario sobre la excepción ocasionada

Hacer un uso responsable de la serialización y deserialización

  • Evitar serializar datos sensibles

Limitar el uso de librerías escritas en otros lenguajes

Escribe tu comentario
+ 2