Temas de seguridad de ASP.NET Core
ASP.NET Core permite a los desarrolladores configurar y administrar la seguridad. En la lista siguiente se proporcionan vínculos a temas de seguridad:
- Autenticación
- Autorización
- Protección de datos
- Cumplimiento de HTTPS
- Almacenamiento seguro de secretos de aplicación en el desarrollo
- Prevención XSRF/CSRF
- Uso compartido de recursos entre orígenes (CORS)
- Ataque de scripts de sitios (XSS)
Estas características de seguridad permiten compilar aplicaciones de ASP.NET Core sólidas y seguras.
Para obtener cobertura de seguridad de Blazor, que agrega o reemplaza las instrucciones de este nodo, consulta Autenticación y autorización de ASP.NET Core Blazor y los demás artículos de Seguridad de Blazor y nodo de Identity.
Características de seguridad de ASP.NET Core
ASP.NET Core proporciona muchas herramientas y bibliotecas para proteger las aplicaciones ASP.NET Core, como proveedores de identity integrados y servicios de identity de terceros como Facebook, Twitter y LinkedIn. ASP.NET Core proporciona varios enfoques para almacenar secretos de aplicación.
Autenticación frente a Autorización
La autenticación es un proceso en el que un usuario proporciona credenciales que después se comparan con las almacenadas en un sistema operativo, base de datos, aplicación o recurso. Si coinciden, los usuarios se autentican correctamente y, después, pueden realizar las acciones para las que están autorizados durante un proceso de autorización. La autorización se refiere al proceso que determina las acciones que un usuario puede realizar.
La autenticación también se puede considerar una manera de entrar en un espacio (como un servidor, base de datos, aplicación o recurso) mientras que la autorización es qué acciones puede realizar el usuario en qué objetos de ese espacio (servidor, base de datos o aplicación).
Vulnerabilidades más comunes en software
ASP.NET Core y EF contienen características que ayudan a proteger las aplicaciones y evitar las infracciones de seguridad. La siguiente lista de vínculos le lleva a documentación en la que se detallan técnicas para evitar las vulnerabilidades de seguridad más comunes en las aplicaciones web:
- Ataque de scripts de sitios (XSS)
- Ataques por inyección de código SQL
- Ataques de falsificación de solicitud entre sitios (XSRF/CSRF)
- Ataques de redireccionamiento abierto
Hay más vulnerabilidades que debe tener en cuenta. Para obtener más información, consulte otros artículos de la sección Seguridad e Identity de la tabla de contenido.
Flujos de autenticación seguros
Se recomienda usar la opción de autenticación segura más segura. En el caso de los servicios de Azure, la autenticación más segura es identidades administradas.
Evita la concesión de credenciales de contraseña de propietario del recurso, ya que:
- Expone la contraseña del usuario al cliente.
- Es un riesgo de seguridad considerable.
- Solo se debe usar cuando no se puedan usar otros flujos de autenticación.
Las identidades administradas son una manera segura de autenticarse en los servicios sin necesidad de almacenar credenciales en el código, las variables de entorno o los archivos de configuración. Las identidades administradas están disponibles para los servicios de Azure y se pueden usar con Azure SQL, Azure Storage y otros servicios de Azure:
- Identidades administradas en Microsoft Entra para Azure SQL
- Identidades administradas para App Service y Azure Functions
- Flujos de autenticación seguros
Cuando la aplicación se implementa en un servidor de prueba, se puede utilizar una variable de entorno para establecer la cadena de conexión en un servidor de base de datos de prueba. Para obtener más información, vea Configuración. Las variables de entorno se almacenan generalmente en texto sin formato y sin cifrar. Si la máquina o el proceso están en peligro, las partes que no son de confianza pueden acceder a las variables de entorno. Se recomienda usar variables de entorno para almacenar una cadena de conexión de producción, ya que no es el enfoque más seguro.
Directrices para los datos de configuración:
- Nunca almacene contraseñas u otros datos confidenciales en el código del proveedor de configuración o en archivos de configuración de texto sin formato. Se puede usar la herramienta Administrador de secretos para almacenar secretos en desarrollo.
- No use secretos de producción en los entornos de desarrollo o pruebas.
- Especifique los secretos fuera del proyecto para que no se confirmen en un repositorio de código fuente de manera accidental.
Directrices para los datos de configuración:
- Nunca almacene contraseñas u otros datos confidenciales en el código del proveedor de configuración o en archivos de configuración de texto sin formato. Se puede usar la herramienta Administrador de secretos para almacenar secretos en desarrollo.
- No use secretos de producción en los entornos de desarrollo o pruebas.
- Especifique los secretos fuera del proyecto para que no se confirmen en un repositorio de código fuente de manera accidental.
Para más información, vea:
- Procedimientos recomendados para identity administradas
- Conexión desde la aplicación a los recursos sin administrar credenciales en tu código
- Servicios de Azure que pueden usar identidades administradas para acceder a otros servicios
- Procedimiento recomendado actual de seguridad de IETF OAuth 2.0
Para obtener información sobre otros proveedores de nube, consulte:
- AWS (Amazon Web Services): AWS Servicio de administración de claves (KMS)
- Introducción a Google Cloud Servicio de administración de claves