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 artículos sobre cómo trabajar con seguridad en ASP.NET Core:

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:

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:

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:

Para obtener información sobre otros proveedores de nube, consulte:

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.