Procedimientos recomendados para la seguridad en C++

Actualización: noviembre 2007

Este tema contiene información sobre las herramientas de seguridad y las prácticas recomendadas. El uso de estos recursos y herramientas no hace a las aplicaciones inmunes a los ataques, pero es menos probable que éstos tengan éxito.

Características de seguridad de Visual C++

Esta sección trata sobre características de seguridad integradas en el compilador y vinculador de Visual C++.

  • /GS (Comprobación de seguridad del búfer)
    Esta opción del compilador indica al compilador que inserte código de detección de saturación en las funciones que presentan algún riesgo de seguridad. Cuando se detecta una saturación, se detiene la ejecución. Esta opción está activada de forma predeterminada.

  • /SAFESEH (La imagen tiene controladores de excepciones seguros)
    Esta opción del vinculador, indica al vinculador que incluya en la imagen de salida una tabla que contenga la dirección de cada controlador de excepciones. En tiempo de ejecución, el sistema operativo utiliza esta tabla para asegurarse de que sólo se ejecuten controladores de excepciones legítimos. Esto ayuda a evitar la ejecución de controladores de excepciones introducidos por un ataque malintencionado en tiempo de ejecución. Esta opción se encuentra deshabilitada de forma predeterminada.

  • /analyze (Análisis del código de empresa)
    Esta opción del compilador activa el análisis de código que informa de posibles problemas de seguridad como saturaciones del búfer, memoria no inicializada, eliminación de referencias al puntero null y pérdidas de memoria. Esta opción se encuentra deshabilitada de forma predeterminada. Vea Análisis de código para obtener información general de C/C++ para obtener más información.

CRT con seguridad mejorada

Para Visual C++ 2005, la Biblioteca en tiempo de ejecución de C (CRT) se ha ampliado para incluir versiones seguras de funciones que presentan un riesgo de seguridad. (La función de copia de cadena strcpy no comprobada, por ejemplo). Las versiones anteriores, no seguras, de estas funciones han quedado obsoletas, por lo que su uso produce advertencias en tiempo de compilación. Se recomienda a los programadores que utilicen las versiones seguras de estas funciones CRT en lugar de suprimir estas advertencias de compilación. Vea Security Enhancements in the CRT para obtener más información.

Iteradores comprobados

Con los iteradores comprobados, se informa a los usuarios de las clases del contenedor de la biblioteca estándar de C++ de los intentos de acceso a los elementos fuera de los límites de un contenedor. Vea Checked Iterators para obtener más información.

Análisis de código para código administrado

Análisis de código para código administrado, también conocido como FxCop, es una herramienta que comprueba si los ensamblados cumplen las instrucciones de diseño de Microsoft .NET Framework. FxCop analiza el código y los metadatos incluidos en cada ensamblado para comprobar defectos en las áreas siguientes:

  • Diseño de la biblioteca

  • Localización

  • Convenciones de nomenclatura

  • Rendimiento

  • Seguridad

El análisis de código para código administrado se incluye en Visual Studio Team System, y también se puede descargar desde la dirección https://www.gotdotnet.com/team/fxcop/.

Comprobador de aplicaciones para Windows

Disponible como parte de Application Compatibility Toolkit, el Comprobador de aplicaciones (AppVerifier) es una herramienta que puede ayudar a los desarrolladores a identificar posibles problemas de seguridad, compatibilidad con aplicaciones y estabilidad.

AppVerifier funciona supervisando el uso del sistema operativo por parte de una aplicación, incluido el sistema de archivos, el Registro, la memoria y las API, mientras se ejecuta la aplicación. La herramienta proporciona una guía para las correcciones en el código fuente de los problemas que descubre.

El comprobador permite hacer lo siguiente:

  • Verificar posibles errores de compatibilidad de aplicaciones producidos por errores de programación comunes.

  • Examinar una aplicación para ver si tiene problemas relacionados con la memoria.

  • Determinar si una aplicación cumple los distintos requisitos de los programas con el logotipo Diseñado para Windows XP o Certificado para Windows Server™ 2003.

  • Identificar los problemas de seguridad potenciales de una aplicación.

El Comprobador de aplicaciones para Windows está disponible en https://www.microsoft.com/windows/appcompatibility/appverifier.mspx.

Características de seguridad de .NET Framework

Esta sección proporciona información general sobre dos características relacionadas con la seguridad de .NET Framework.

Cuentas de usuario de Windows

El uso de cuentas de usuario de Windows que pertenecen al grupo Administradores expone a los desarrolladores (y, por extensión, a los clientes) a riesgos de seguridad. Vea Ejecutar como miembro del grupo de usuarios para obtener más información.

Aumentar la seguridad mediante el Control de cuentas de usuario en Windows Vista

El control de cuentas de usuario (UAC) es una característica de Windows Vista para limitar los privilegios de las cuentas de usuario. Para obtener más información, consulte Cómo el control de cuentas de usuario (UAC) afecta a la aplicación.

Vea también

Conceptos

Cómo el control de cuentas de usuario (UAC) afecta a la aplicación

Referencia

System.Security

Otros recursos

Proteger aplicaciones