Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
ASP.NET Core permite a los desarrolladores configurar y administrar la seguridad. En la lista siguiente se proporcionan vínculos a artículos sobre cómo trabajar con seguridad en ASP.NET Core:
- Autenticación
- Autorización
- Protección de datos
- Cumplimiento de HTTPS
- Almacenamiento seguro de secretos de aplicación en el desarrollo
- Prevención de XSRF/CSRF
- Uso compartido de recursos entre orígenes (CORS)
- Ataques de secuencias de comandos entre sitios (XSS)
Estas características de seguridad permiten compilar aplicaciones de ASP.NET Core sólidas y seguras.
Para obtener información sobre la cobertura de seguridad de Blazor, que amplía o sustituye las indicaciones de este nodo, consulta Autenticación y autorización de ASP.NET Core Blazor y los demás artículos del nodo Seguridad y Identity de Blazor.
Características de seguridad de ASP.NET Core
ASP.NET Core proporciona muchas herramientas y bibliotecas para proteger aplicaciones ASP.NET Core, como proveedores de identidades integrados y servicios de identidad que no son Microsoft, 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 se comparan con las credenciales almacenadas en un sistema operativo, una base de datos, una aplicación o un recurso. Cuando coinciden los dos conjuntos de credenciales, el usuario se autentica correctamente. Después, pueden realizar acciones para las que están autorizadas. El proceso de autorización determina las acciones que el usuario puede realizar.
Otra manera de pensar en la autenticación es considerarla como una forma de entrar en un espacio, donde ese espacio es un servidor, una base de datos, una aplicación o un recurso. La autorización define qué acciones puede realizar el usuario en qué objetos dentro de ese espacio (servidor, base de datos o aplicación).
Vulnerabilidades comunes en el software
ASP.NET Core y Entity Framework contienen características que le ayudan a proteger las aplicaciones y a evitar 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:
- Ataques de secuencias de comandos en sitios cruzados (XSS)
- Consultas SQL > ataques de inyección SQL
- Ataques de falsificación de petición entre sitios web (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 más segura. En el caso de los servicios de Azure, la autenticación más segura es identidades administradas.
Evite usar la concesión de credenciales de contraseña del propietario del recurso (ROPG):
- Expone la contraseña del usuario al cliente.
- Es un riesgo de seguridad significativo.
- Úselo solo cuando no sean posibles 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 normalmente en texto plano y sin cifrar. Si la máquina o el proceso están en peligro, es posible que las variables de entorno sean accesibles para partes que no son de confianza. Desaconsejamos usar variables de entorno para almacenar una cadena de conexión de producción, ya que no es la opción más segura.
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.
- Defina los secretos fuera del proyecto para que no se incluyan accidentalmente en un repositorio de código fuente.
Para más información, vea:
- Recomendaciones de mejores prácticas de identidad gestionada
- 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
- Mejores prácticas actuales de seguridad de OAuth 2.0 del IETF (sección 2.4: concesión de credenciales de contraseña del propietario del recurso)
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
Patrones de aplicaciones web empresariales
Para obtener instrucciones sobre cómo crear una aplicación ASP.NET Core confiable, segura, eficiente, comprobable y escalable, consulte patrones de aplicaciones web empresariales. Hay disponible una aplicación web de ejemplo de calidad de producción completa que implementa los patrones.