Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés
Se recomienda usar Visual Studio 2017
Esta documentación está archivada y no tiene mantenimiento.

Procedimientos recomendados para la seguridad en C++

Este artículo contiene la información sobre herramientas y procedimientos de seguridad. Con ellos no crea aplicaciones inmunes de ataque, pero sí menos vulnerables.

Estas características de seguridad se compilan en el compilador y vinculador de Visual C++:

/GS (Comprobación de seguridad del búfer)

Indica al compilador que inserte código de detección de saturación en las funciones que están en riesgo de seguridad. Cuando se detecta una saturación, se detiene la ejecución. De forma predeterminada, esta opción está activada.

/SAFESEH (La imagen tiene controladores de excepciones seguros)

Indica al vinculador en la imagen de salida una tabla que contiene 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 mostrados por un ataque malintencionado en tiempo de ejecución. De forma predeterminada, esta opción está desactivada.

/NXCOMPAT , /NXCOMPAT (compatible con la prevención de ejecución de datos)

Este compilador y compatibilidad de (DEP) de la Prevención de ejecución de datos de las opciones del vinculador. DEP protege la CPU ante la ejecución de las páginas de no código.

/analyze (análisis de código)

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, desreferenciación del puntero null y pérdidas de memoria. De forma predeterminada, esta opción está desactivada. Para obtener más información, vea Análisis de código para obtener información general de C/C++.

/DYNAMICBASE (Usar selección aleatoria del diseño del espacio de direcciones)

Esta opción del vinculador permite compilar de una imagen ejecutable que se puede cargar en diferentes ubicaciones de memoria al comienzo de la ejecución. Esta opción también hace que la ubicación de la pila en la memoria sea menos predecible.

La biblioteca en tiempo de ejecución de C (CRT) se ha ampliado para incluir versiones seguras de funciones que presentan seguridad riesgo- para el ejemplo, la función desactivado de la copia de la cadena de strcpy. Dado que las anteriores, inseguro versiones de estas funciones están desusados, producen advertencias en tiempo de compilación. Recomendamos que utilicen las versiones seguras de estas funciones CRT en lugar de suprimir las advertencias de compilación. Para obtener más información, vea Características de seguridad en CRT.

Ayuda del Biblioteca SafeInt evitar los desbordamientos de enteros y otros errores explotables que pueden producirse cuando la aplicación realiza operaciones matemáticas. La biblioteca SafeInt incluye SafeInt (Clase), SafeIntException (Clase) y varias funciones Funciones SafeInt.

La clase SafeInt protege ante el desbordamiento de enteros y los ataques de división por cero. Puede utilizarlo para controlar las comparaciones entre los valores de tipos diferentes. I proporciona dos directivas de control de errores. La directiva predeterminada es para que la clase SafeInt produzca una excepción de clase SafeIntException que indique por qué no se puede completar una operación matemática. La segunda directiva es para que la clase SafeInt detenga la ejecución de programas. También puede definir una directiva personalizada.

Cada función SafeInt protege una operación matemática ante un error explotable. Puede utilizar dos tipos diferentes de parámetros sin convertirlos a un mismo tipo. Para proteger varias operaciones matemáticas, utilice la clase de SafeInt.

Un iterador comprobado aplica límites del contenedor. De forma predeterminada, cuando un iterador comprobado está fuera de los límites, genera una excepción y finaliza la ejecución de programas. Un iterador comprobado proporciona otros niveles de respuesta que dependen de los valores asignados al preprocesador por ejemplo _SECURE_SCL_THROWS y _ITERATOR_DEBUG_LEVEL. Por ejemplo, en _ITERATOR_DEBUG_LEVEL=2, un iterador comprobado proporciona completa en modo de depuración de las comprobaciones de corrección, utilizando que están disponibles aserciones. Para obtener más información, vea Iteradores comprobados.

Análisis de código para código administrado, también conocido como FxCop, comprueba los ensamblados con las directrices de diseño de.NET framework. FxCop analiza el código y los metadatos de cada ensamblado para comprobar defectos en las áreas siguientes:

  • Diseño de la biblioteca

  • Localización

  • Convenciones de nomenclatura

  • Rendimiento

  • Seguridad

El comprobador de aplicaciones (AppVerifier) pueden ayudarle a identificar compatibilidad de aplicaciones, estabilidad, y posibles problemas de seguridad.

AppVerifier supervisa cómo una aplicación utiliza el sistema operativo. Inspecciona el sistema de archivos, el registro, memoria, y las API mientras se ejecuta la aplicación, y recomienda correcciones de código fuente para los problemas que detecta.

Puede utilizar el AppVerifier:

  • Pruebe 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.

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

El AppVerifier es parte del kit de herramientas de compatibilidad de aplicaciones, que está disponible Compatibilidad de aplicaciones en el sitio Web de TechNet.

Configuring Security Policy describe instrucciones y herramientas para ajustar las directivas de seguridad de .NET Framework.

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. Para obtener más información, vea Ejecutar como miembro del grupo de usuarios y Cómo el Control de cuentas de usuario (UAC) afecta a la aplicación.

Mostrar: