Procedimientos recomendados sobre seguridad en la automatización

Actualización: noviembre 2007

Los desarrolladores de automatización de Visual Studio deben entender y aceptar la responsabilidad de crear aplicaciones seguras mediante la comprensión de las vulnerabilidades de seguridad. Una aplicación segura protege la confidencialidad, integridad y disponibilidad de la información de los clientes. Además, protege la integridad y disponibilidad de los recursos de procesamiento controlados por el propietario o administrador del sistema.

Con fines de análisis, una vulnerabilidad de seguridad es un defecto de un producto que permite que un atacante (incluso cuando el producto se utiliza correctamente) pueda:

  • apropiarse de los privilegios en el sistema del usuario;

  • regular, cambiar o redirigir su operación;

  • comprometer los datos;

    O bien

  • adquirir una confianza no otorgada.

Nota importante:

Nunca debe dar por sentado que la aplicación se ejecutará sólo en algunos entornos determinados, sobre todo si la aplicación se convierte en muy popular. Es muy probable que se utilice en otro escenario imprevisto. En su lugar, suponga que el código se ejecutará en los entornos más hostiles. Por consiguiente, diseñe, escriba y pruebe el código.

Crear aplicaciones seguras produce beneficios. El código que inicialmente se diseña y se genera teniendo en cuenta la seguridad es más sólido que el código que se escribe considerando la seguridad como problema secundario. Las aplicaciones diseñadas de forma segura también son más resistentes a la crítica de los medios, más atractivas para los usuarios, y su corrección y soporte técnico son más baratos.

API peligrosas

Algunas funciones de las API se pueden considerar más peligrosas que otras desde el punto de vista de la seguridad. Algunas pueden ser inherentemente peligrosas por su funcionamiento. Otras pueden ser peligrosas si no se llaman o no se controlan correctamente. El problema es que se debe familiarizar con los errores y peculiaridades de las diversas funciones de las API a las que se llame, y, si éstas plantean cualquier tipo de riesgo de seguridad, asegurarse de utilizarlas correctamente.

Además, no se debe suponer que debido a que el código sólo utiliza funciones de las API que se consideran "seguras", la aplicación está automáticamente libre de amenazas de seguridad. Las prácticas de programación negligentes pueden exponer la aplicación a tanto o más riesgo que cuando se utilizan funciones supuestamente "peligrosas". En estas prácticas se pueden incluir:

  • no controlar las excepciones de forma correcta;

  • utilizar rutas de acceso en el código;

  • utilizar cadenas de conexión incluidas en el código;

    O bien

  • no comprobar las credenciales o los permisos de los usuario correspondientes.

Para proteger las aplicaciones, se deben entender perfectamente los problemas de seguridad del código e investigar el tema. El libro de Microsoft Press, Writing Secure Code, y el sitio web Security Coding Guidelines en https://msdn2.microsoft.com/en-us/library/d55zzx87.aspx son recursos muy útiles.

Otro problema importante que se debe entender es que muchos problemas de seguridad son el resultado de aplicaciones que confían ciegamente en la entrada de datos. Es básico que las aplicaciones examinen y evalúen cuidadosamente los datos a medida que se reciben para verificar que se trata de datos con el formato correcto y confiables antes de utilizarlos.

Características de seguridad de automatización

Además de seguir estas instrucciones, la automatización de Visual Studio proporciona algunas maneras sencillas y concretas para ayudarle a proteger el sistema frente al aprovechamiento de las vulnerabilidades de seguridad de automatización. Sin embargo, recuerde que éstas no son una panacea para todos los problemas de seguridad. Más bien, son un buen punto de partida. Para obtener más información, vea Seguridad de complementos.

Investigue y siga cuidadosamente las instrucciones de seguridad de .NET antes de generar aplicaciones de automatización.

Vea también

Conceptos

Recursos para crear aplicaciones seguras

Otros recursos

Conceptos clave de seguridad