| Producto o servicio |
Artículo |
| Límite de confianza de la máquina |
|
| Aplicación web |
|
| Base de datos |
|
| API web |
|
| Azure DocumentDB |
|
| Límites de confianza de VM de IaaS de Azure |
|
| Límites de confianza de Service Fabric |
|
| Dynamics CRM |
|
| Almacenamiento de Azure |
|
| Cliente para dispositivos móviles |
|
| WCF |
|
Asegúrese de que los archivos binarios estén ofuscados si contienen información confidencial
| Título |
Detalles |
| Componente |
Límite de confianza de la máquina |
| Fase de SDL |
Implementación |
| Tecnologías aplicables |
Genérico |
| Atributos |
N/D |
| Referencias |
N/D |
| Pasos |
Asegúrese de que los archivos binarios estén ofuscados si contienen información confidencial como secretos comerciales o lógica de negocios confidencial que no se deba revelar. Esto sirve para detener la ingeniería inversa de ensamblados. Para este fin se pueden usar herramientas como CryptoObfuscator. |
Considere la posibilidad de usar el sistema de cifrado de archivos (EFS) para proteger información confidencial específica del usuario
| Título |
Detalles |
| Componente |
Límite de confianza de la máquina |
| Fase de SDL |
Build |
| Tecnologías aplicables |
Genérico |
| Atributos |
N/D |
| Referencias |
N/D |
| Pasos |
Considere la posibilidad de usar el sistema de cifrado de archivos (EFS) para proteger información confidencial específica del usuario frente a adversarios con acceso físico al equipo. |
Asegúrese de que se cifre la información confidencial almacenada por la aplicación en el sistema de archivos
| Título |
Detalles |
| Componente |
Límite de confianza de la máquina |
| Fase de SDL |
Implementación |
| Tecnologías aplicables |
Genérico |
| Atributos |
N/D |
| Referencias |
N/D |
| Pasos |
Asegúrese de que la información confidencial almacenada por la aplicación en el sistema de archivos esté cifrada (por ejemplo, mediante DPAPI) si no se puede aplicar EFS. |
Asegúrese de que no se almacene contenido confidencial en la memoria caché del explorador
| Título |
Detalles |
| Componente |
Aplicación web |
| Fase de SDL |
Build |
| Tecnologías aplicables |
Genérico, formularios Web Forms, MVC5, MVC6 |
| Atributos |
N/D |
| Referencias |
N/D |
| Pasos |
Los exploradores pueden almacenar información para la memoria caché y el historial. Estos archivos almacenados en caché se guardan en una carpeta, como la carpeta Archivos temporales de Internet en el caso de Internet Explorer. Si se vuelve a hacer referencia a estas páginas, el explorador las muestra desde su memoria caché. Si se muestra información confidencial al usuario (por ejemplo, su dirección, datos de la tarjeta de crédito, número del seguro social o nombre de usuario), podría quedar almacenada en la memoria caché del explorador y, por tanto, ser recuperable mediante un examen de la memoria caché del explorador o simplemente al presionar el botón "Atrás" del explorador. Establezca el valor del encabezado de respuesta cache-control en "no-store" para todas las páginas. |
Ejemplo
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-store" />
<add name="Pragma" value="no-cache" />
<add name="Expires" value="-1" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Ejemplo
Esto se puede implementar por medio de un filtro. Puede usar el siguiente ejemplo:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext == null || (filterContext.HttpContext != null && filterContext.HttpContext.Response != null && filterContext.HttpContext.Response.IsRequestBeingRedirected))
{
//// Since this is MVC pipeline, this should never be null.
return;
}
var attributes = filterContext.ActionDescriptor.GetCustomAttributes(typeof(System.Web.Mvc.OutputCacheAttribute), false);
if (attributes == null || **Attributes**.Count() == 0)
{
filterContext.HttpContext.Response.Cache.SetNoStore();
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
if (!filterContext.IsChildAction)
{
filterContext.HttpContext.Response.AppendHeader("Pragma", "no-cache");
}
}
base.OnActionExecuting(filterContext);
}
Cifre las secciones de los archivos de configuración de la aplicación web que contengan información confidencial
| Título |
Detalles |
| Componente |
Aplicación web |
| Fase de SDL |
Build |
| Tecnologías aplicables |
Genérico |
| Atributos |
N/D |
| Referencias |
Cómo: Encrypt Configuration Sections in ASP.NET 2.0 Using DPAPI (Procedimiento para cifrar secciones de configuración en ASP.NET 2.0 mediante DPAPI), Especificar un proveedor de configuración protegida, Uso de Azure Key Vault para proteger los secretos de la aplicación |
| Pasos |
Los archivos de configuración tales como web.config y appsettings.json se suelen usar para almacenar información confidencial, como nombres de usuario, contraseñas, cadenas de conexión a la base de datos y claves de cifrado. Si no protege esta información, la aplicación es vulnerable a atacantes o usuarios malintencionados que obtienen información confidencial, como nombres de usuario y contraseñas de cuentas, nombres de bases de datos y nombres de servidores. Según el tipo de implementación (Azure o local), cifre las secciones confidenciales de los archivos de configuración mediante DPAPI o servicios como Azure Key Vault. |
| Título |
Detalles |
| Componente |
Aplicación web |
| Fase de SDL |
Build |
| Tecnologías aplicables |
Genérico |
| Atributos |
N/D |
| Referencias |
MSDN: autocomplete attribute (MSDN: atributo autocomplete), Using Autocomplete en HTML forms (Uso de Autocompletar en formularios HTML), Vulnerabilidad en la comprobación del estado de HTML, Autocomplete.,again?! (Vuelta a Autocompletar) |
| Pasos |
El atributo autocomplete especifica si un formulario debe tener Autocompletar activado o desactivado. Cuando está activado, el explorador completa automáticamente los valores en función de los que el usuario haya escrito antes. Por ejemplo, cuando se escribe un nombre y una contraseña nuevos en un formulario y se envía este, el explorador le pregunta si se debe guardar la contraseña. A partir de entonces, cuando se muestre el formulario, el nombre y la contraseña se rellenan automáticamente o se completan cuando se escribe el nombre. Un atacante con acceso local podría obtener la contraseña no cifrada de la memoria caché del explorador. De forma predeterminada, la función Autocompletar está habilitada y se debe deshabilitar explícitamente. |
Ejemplo
<form action="Login.aspx" method="post " autocomplete="off" >
Social Security Number: <input type="text" name="ssn" />
<input type="submit" value="Submit" />
</form>
Asegúrese de que la información confidencial que se muestra en la pantalla del usuario esté enmascarada
| Título |
Detalles |
| Componente |
Aplicación web |
| Fase de SDL |
Build |
| Tecnologías aplicables |
Genérico |
| Atributos |
N/D |
| Referencias |
N/D |
| Pasos |
La información confidencial, como contraseñas, números de tarjeta de crédito, números del seguro social, etc., debe estar enmascarada cuando se muestre en pantalla. El objetivo es impedir que el personal no autorizado acceda a los datos (por ejemplo, contraseñas vistas por encima del hombro, personal de soporte que ve los números del seguro social de los usuarios). Asegúrese de que estos elementos de datos no sean visibles sin cifrar y que estén enmascarados correctamente. Esto se debe tener en cuenta al aceptarlos como entrada (por ejemplo, tipo de entrada="contraseña") y mostrarse de nuevo en la pantalla (por ejemplo, mostrar solo los últimos 4 dígitos del número de tarjeta de crédito). |
Implemente el enmascaramiento dinámico de datos para limitar la exposición de información confidencial a usuarios sin privilegios
| Título |
Detalles |
| Componente |
Base de datos |
| Fase de SDL |
Build |
| Tecnologías aplicables |
SQL Azure, OnPrem |
| Atributos |
Versión de SQL: V12, versión de SQL: MsSQL2016 |
| Referencias |
Enmascaramiento de datos dinámicos |
| Pasos |
La finalidad del enmascaramiento dinámico de datos consiste en limitar la exposición de la información confidencial, con lo que se impide que los usuarios vean datos a los que no deberían poder acceder. El enmascaramiento dinámico de datos no pretende evitar que los usuarios de la base de datos se conecten directamente a ella y ejecuten consultas exhaustivas que expongan información confidencial. El enmascaramiento dinámico de datos complementa a otras características de seguridad de SQL Server (auditoría, cifrado, seguridad de nivel de fila…) y se recomienda encarecidamente que se utilice junto con ellas para proteger mejor la información confidencial en la base de datos. Tenga en cuenta que esta característica solo es compatible con SQL Server a partir de 2016 y Azure SQL Database. |
Asegúrese de que las contraseñas se almacenen en formato de hash con sal
| Título |
Detalles |
| Componente |
Base de datos |
| Fase de SDL |
Build |
| Tecnologías aplicables |
Genérico |
| Atributos |
N/D |
| Referencias |
Hash de contraseña mediante las API de criptografía de .NET |
| Pasos |
Las contraseñas no se deberían almacenar en bases de datos de almacén de usuarios personalizadas. En su lugar, los hash de contraseña se deben almacenar con valores sal. Asegúrese de que el valor de sal del usuario es siempre único y de que aplica b-crypt, s-crypt o PBKDF2 antes de almacenar la contraseña, con un número de iteraciones de factor de trabajo mínimo de 150 000 bucles para eliminar la posibilidad de ataques de fuerza bruta. |
Asegúrese de que la información confidencial en las columnas de la base de datos esté cifrada
| Título |
Detalles |
| Componente |
Base de datos |
| Fase de SDL |
Build |
| Tecnologías aplicables |
Genérico |
| Atributos |
Versión de SQL: todas |
| Referencias |
Cifrar datos confidenciales en SQL server, Cifrar una columna de datos, Cifrar por certificado |
| Pasos |
La información confidencial, como los números de tarjeta de crédito, debe estar cifrada en la base de datos. Los datos se pueden cifrar con cifrado de nivel de columna o con una función de aplicación mediante las funciones de cifrado. |
Asegúrese de que el cifrado de base de datos (TDE) esté habilitado
| Título |
Detalles |
| Componente |
Base de datos |
| Fase de SDL |
Build |
| Tecnologías aplicables |
Genérico |
| Atributos |
N/D |
| Referencias |
Descripción del Cifrado de datos transparente (TDE) en SQL Server |
| Pasos |
La característica Cifrado de datos transparente (TDE) de SQL Server ayuda a cifrar la información confidencial en una base de datos y a proteger las claves que se usan para cifrar los datos con un certificado. Esto impide que alguien que carezca de las claves use los datos. TDE protege los datos "en reposo", es decir, los archivos de datos y de registro. Ofrece la posibilidad de cumplir muchas leyes, normativas y directrices establecidas en diversos sectores. |
Asegúrese de que las copias de seguridad de la base de datos estén cifradas
| Título |
Detalles |
| Componente |
Base de datos |
| Fase de SDL |
Build |
| Tecnologías aplicables |
SQL Azure, OnPrem |
| Atributos |
Versión de SQL: V12, versión de SQL: MsSQL2014 |
| Referencias |
Cifrado de copia de seguridad de bases de datos SQL |
| Pasos |
SQL Server tiene la capacidad de cifrar los datos mientras se crea una copia de seguridad. Al especificar el algoritmo de cifrado y el sistema de cifrado (un certificado o una clave asimétrica) cuando se crea una copia de seguridad, se puede crear un archivo de copia de seguridad cifrado. |
Asegúrese de que la información confidencial relevante para la API web no se guarde en el almacenamiento del explorador
| Título |
Detalles |
| Componente |
API Web |
| Fase de SDL |
Build |
| Tecnologías aplicables |
MVC 5, MVC 6 |
| Atributos |
Proveedor de identidades - ADFS, Proveedor de identidades - Id. de Microsoft Entra |
| Referencias |
N/D |
| Pasos |
En algunas implementaciones, se guardan artefactos confidenciales pertinentes para la autenticación de la API web en el almacenamiento local del explorador. Por ejemplo, artefactos de autenticación de Microsoft Entra como adal.idtoken, adal.nonce.idtoken, adal.access.token.key, adal.token.keys, adal.state.login, adal.session.state, adal.expiration.key, etc. Todos estos artefactos están disponibles aun después de que se cierren la sesión o el explorador. Si un adversario obtiene acceso a estos artefactos, puede volver a usarlos para acceder a los recursos protegidos (las API). Asegúrese de que todos los artefactos confidenciales relacionados con la API web no se guarden en el almacenamiento del explorador. En aquellos casos en que el almacenamiento del lado cliente sea inevitable (por ejemplo, las aplicaciones con una sola página (SPA) que aprovechan los flujos de OAuth/OpenIdConnect implícito necesitan almacenar localmente los tokens de acceso), use opciones de almacenamiento sin persistencia. Por ejemplo, es preferible SessionStorage a LocalStorage. |
Ejemplo
El siguiente fragmento de código JavaScript es de una biblioteca de autenticación personalizada que guarda artefactos de autenticación en almacenamiento local. Se deben evitar estas implementaciones.
ns.AuthHelper.Authenticate = function () {
window.config = {
instance: 'https://login.microsoftonline.com/',
tenant: ns.Configurations.Tenant,
clientId: ns.Configurations.AADApplicationClientID,
postLogoutRedirectUri: window.location.origin,
cacheLocation: 'localStorage', // enable this for Internet Explorer, as sessionStorage does not work for localhost.
};
Cifre la información confidencial almacenada en Azure Cosmos DB
| Título |
Detalles |
| Componente |
Azure DocumentDB |
| Fase de SDL |
Build |
| Tecnologías aplicables |
Genérico |
| Atributos |
N/D |
| Referencias |
N/D |
| Pasos |
Cifre la información confidencial en el nivel de aplicación antes de almacenarla en DocumentDB o almacene cualquier información confidencial en otras soluciones de almacenamiento como Azure Storage o SQL de Azure. |
Use Azure Disk Encryption para cifrar discos usados por máquinas virtuales
| Título |
Detalles |
| Componente |
Límites de confianza de máquinas virtuales de IaaS de Azure |
| Fase de SDL |
Implementación |
| Tecnologías aplicables |
Genérico |
| Atributos |
N/D |
| Referencias |
Uso de Azure Disk Encryption para cifrar discos usados por las máquinas virtuales |
| Pasos |
El Azure Disk Encryption es una nueva característica que está actualmente en su versión preliminar. Esta característica le permite cifrar los discos de datos y del sistema operativo usados por una máquina virtual de IaaS. Para Windows, las unidades se cifran mediante la tecnología de cifrado de BitLocker estándar del sector. Para Linux, los discos se cifran mediante la tecnología DM-Crypt. Se integra con Azure Key Vault para permitirle controlar y administrar las claves de cifrado del disco. La solución Azure Disk Encryption admite los tres siguientes escenarios de cifrado de cliente: - Habilitar el cifrado en nuevas máquinas virtuales de IaaS creadas a partir de archivos VHD cifrados por el cliente y claves de cifrado proporcionadas por el cliente, que se almacenan en Azure Key Vault.
- Habilitar el cifrado en nuevas máquinas virtuales de IaaS creadas en Azure Marketplace.
- Habilitar el cifrado en máquinas virtuales de IaaS existentes que ya se ejecutan en Azure.
|
Cifre los secretos en aplicaciones de Service Fabric
| Título |
Detalles |
| Componente |
Límites de confianza de Service Fabric |
| Fase de SDL |
Build |
| Tecnologías aplicables |
Genérico |
| Atributos |
Entorno: Azure |
| Referencias |
Administración de secretos en aplicaciones de Service Fabric |
| Pasos |
Los secretos pueden ser cualquier información confidencial, como cadenas de conexión de almacenamiento, contraseñas u otros valores que no se deben administrar en texto sin formato. Use Azure Key Vault para administrar claves y secretos en aplicaciones de Service Fabric. |
Realice el modelado de seguridad y use unidades de negocio y equipos cuando sea necesario.
| Título |
Detalles |
| Componente |
Dynamics CRM |
| Fase de SDL |
Build |
| Tecnologías aplicables |
Genérico |
| Atributos |
N/D |
| Referencias |
N/D |
| Pasos |
Realice el modelado de seguridad y use unidades de negocio y equipos cuando sea necesario. |
Minimice el acceso a la característica para compartir en entidades críticas.
| Título |
Detalles |
| Componente |
Dynamics CRM |
| Fase de SDL |
Implementación |
| Tecnologías aplicables |
Genérico |
| Atributos |
N/D |
| Referencias |
N/D |
| Pasos |
Minimice el acceso a la característica para compartir en entidades críticas. |
Entrene a los usuarios sobre los riesgos asociados con la característica Compartir de Dynamics CRM y los procedimientos recomendados de seguridad.
| Título |
Detalles |
| Componente |
Dynamics CRM |
| Fase de SDL |
Implementación |
| Tecnologías aplicables |
Genérico |
| Atributos |
N/D |
| Referencias |
N/D |
| Pasos |
Entrene a los usuarios sobre los riesgos asociados con la característica Compartir de Dynamics CRM y los procedimientos recomendados de seguridad. |
Incluya una regla de estándares de desarrollo que prohíba mostrar detalles de configuración en la administración de excepciones
| Título |
Detalles |
| Componente |
Dynamics CRM |
| Fase de SDL |
Implementación |
| Tecnologías aplicables |
Genérico |
| Atributos |
N/D |
| Referencias |
N/D |
| Pasos |
Incluya una regla de estándares de desarrollo que prohíba mostrar detalles de configuración en la administración de excepciones fuera del desarrollo. Pruebe esto como parte de las revisiones del código o de la inspección periódica. |
Use el cifrado del servicio Azure Storage (SSE) para datos en reposo (versión preliminar)
| Título |
Detalles |
| Componente |
Azure Storage |
| Fase de SDL |
Build |
| Tecnologías aplicables |
Genérico |
| Atributos |
StorageType: blob |
| Referencias |
Cifrado del servicio Azure Storage para datos en reposo (versión preliminar) |
| Pasos |
Cifrado del servicio Azure Storage (SSE) para datos en reposo le ayuda a asegurar y proteger sus datos con el fin de cumplir con los compromisos de cumplimiento y seguridad de su organización. Con esta característica, Azure Storage cifra automáticamente sus datos antes de continuar al almacenamiento y los descifra después de la recuperación. La administración de claves, cifrado y descifrado es completamente transparente para los usuarios. SSE se aplica solo a blobs en bloques, blobs en páginas y blobs en anexos. Los otros tipos de datos, como tablas, colas y archivos, no se cifrarán. Flujo de trabajo de cifrado y descifrado: - El cliente habilita el cifrado en la cuenta de almacenamiento.
- Cuando el cliente escribe datos nuevos (PUT Blob, PUT Block, PUT Page, etc.) en Blob Storage, cada escritura se cifra mediante un cifrado AES de 256 bits, uno de los cifrados de bloques más sólidos disponibles.
- Cuando el cliente necesita acceder a datos (GET Blob, etc.), estos se descifran automáticamente antes de que se devuelvan al usuario.
- Si el cifrado está deshabilitado, las escrituras nuevas se dejan de cifrar y los datos cifrados existentes siguen cifrados hasta que el usuario los reescriba. Mientras el cifrado esté habilitado, se cifrarán las escrituras en el Almacenamiento de blobs. El estado de los datos no cambia cuando el usuario habilita y deshabilita el cifrado de la cuenta de almacenamiento.
- Microsoft almacena, cifra y administra todas las claves de cifrado.
Tenga en cuenta que, en este momento, Microsoft administra las claves utilizadas para el cifrado. Microsoft genera las claves originalmente y administra su almacenamiento seguro, así como la rotación periódica de acuerdo con la política interna de Microsoft. En el futuro, los clientes tendrán la posibilidad de administrar sus propias claves de cifrado, y se proporcionará una ruta de migración de las claves administradas por Microsoft a las administradas por el cliente. |
Use el cifrado en el cliente para almacenar información confidencial en Azure Storage
| Título |
Detalles |
| Componente |
Azure Storage |
| Fase de SDL |
Build |
| Tecnologías aplicables |
Genérico |
| Atributos |
N/D |
| Referencias |
Cifrado del lado de cliente y Azure Key Vault para Microsoft Azure Storage, Tutorial: Cifrado y descifrado de blobs en Microsoft Azure Storage con Azure Key Vault, Storing Data Securely in Azure Blob Storage with Azure Encryption Extensions (Almacenamiento seguro de datos en Azure Blob Storage con Azure Encryption Extensions) |
| Pasos |
La biblioteca de cliente de Azure Storage para el paquete NuGet de .NET admite el cifrado de datos dentro de las aplicaciones cliente antes de cargarlos en Azure Storage y el descifrado de los datos mientras se descargan al cliente. La biblioteca también admite la integración con Azure Key Vault para la administración de las claves de la cuenta de almacenamiento. Esta es una breve descripción de cómo funciona el cifrado del lado cliente: - El SDK de cliente de Azure Storage genera una clave de cifrado de contenido (CEK), que es una clave simétrica de un solo uso.
- Los datos de usuario se cifran mediante esta CEK.
- Se encapsula la CEK (cifrada) con la clave de cifrado de clave (KEK). La KEK se identifica mediante un identificador de clave y puede ser un par de clave asimétrico o una clave simétrica que puede administrarse de forma local o guardarse en Azure Key Vault. El propio cliente de almacenamiento no tiene acceso a KEK. Simplemente invoca el algoritmo de ajuste de clave proporcionado por Key Vault. Los clientes pueden elegir usar proveedores personalizados para encapsular y desencapsular la clave si así lo desean.
- A continuación, se cargan los datos cifrados en el servicio Azure Storage. Consulte los vínculos de la sección Referencias para ver detalles de implementación de bajo nivel.
|
Cifre la información confidencial o de identificación personal guardada en el almacenamiento local de teléfonos
| Título |
Detalles |
| Componente |
Cliente móvil |
| Fase de SDL |
Build |
| Tecnologías aplicables |
Genérico, Xamarin |
| Atributos |
N/D |
| Referencias |
Administrar la configuración y las características de los dispositivos con directivas de Microsoft Intune, Keychain Valet |
| Pasos |
Si la aplicación escribe información confidencial, como información de identificación personal del usuario (correo electrónico, número de teléfono, nombre, apellidos, preferencias, etc.), en el sistema de archivos del dispositivo móvil, se debería cifrar antes de escribirla en el sistema de archivos local. Si la aplicación es empresarial, considere la posibilidad de publicar la aplicación mediante Windows Intune. |
Ejemplo
Intune se puede configurar con las siguientes directivas de seguridad para proteger datos confidenciales:
Require encryption on mobile device
Require encryption on storage cards
Allow screen capture
Ejemplo
Si la aplicación no es empresarial, use el almacén de claves proporcionado por la plataforma, llaveros para almacenar claves de cifrado, con cualquier operación criptográfica que se pueda realizar en el sistema de archivos. En el siguiente fragmento de código, se muestra cómo acceder a la clave del llavero con xamarin:
protected static string EncryptionKey
{
get
{
if (String.IsNullOrEmpty(_Key))
{
var query = new SecRecord(SecKind.GenericPassword);
query.Service = NSBundle.MainBundle.BundleIdentifier;
query.Account = "UniqueID";
NSData uniqueId = SecKeyChain.QueryAsData(query);
if (uniqueId == null)
{
query.ValueData = NSData.FromString(System.Guid.NewGuid().ToString());
var err = SecKeyChain.Add(query);
_Key = query.ValueData.ToString();
}
else
{
_Key = uniqueId.ToString();
}
}
return _Key;
}
}
Ofusque los archivos binarios generados antes de distribuirlos a los usuarios finales
| Título |
Detalles |
| Componente |
Cliente móvil |
| Fase de SDL |
Build |
| Tecnologías aplicables |
Genérico |
| Atributos |
N/D |
| Referencias |
Crypto Obfuscator For .NET |
| Pasos |
Los archivos binarios generados (ensamblados en apk) se deben ofuscar para detener la ingeniería inversa de los ensamblados. Para tal propósito se pueden usar herramientas como CryptoObfuscator. |
Establezca clientCredentialType en Certificate o Windows
| Título |
Detalles |
| Componente |
WCF |
| Fase de SDL |
Build |
| Tecnologías aplicables |
.NET Framework 3 |
| Atributos |
N/D |
| Referencias |
Fortify |
| Pasos |
Si se usa un token UsernameToken con una contraseña sin cifrar en un canal no cifrado, se expone la contraseña a atacantes que puedan rastrear los mensajes SOAP. Es posible que los proveedores de servicios que usan UsernameToken acepten las contraseñas enviadas sin cifrar. Si se envían contraseñas sin cifrar por un canal no cifrado, se puede exponer la credencial a atacantes que puedan rastrear el mensaje SOAP. |
Ejemplo
La siguiente configuración del proveedor de servicios WCF usa UsernameToken:
<security mode="Message">
<message clientCredentialType="UserName" />
Establezca clientCredentialType en Certificate o Windows.
El modo de seguridad de WCF no está habilitado
| Título |
Detalles |
| Componente |
WCF |
| Fase de SDL |
Build |
| Tecnologías aplicables |
Genérico, .NET Framework 3 |
| Atributos |
Modo de seguridad: Transport, modo de seguridad: Message |
| Referencias |
MSDN, Fortify Kingdom, Fundamentals of WCF Security CoDe Magazine (Fundamentos de la seguridad de WCF en CoDe Magazine) |
| Pasos |
No se ha definido la seguridad de transporte ni de mensajes. Las aplicaciones que transmiten mensajes sin seguridad de transporte ni de mensajes no pueden garantizar la integridad ni la confidencialidad de los mensajes. Cuando un enlace de seguridad de WCF se establece en None, se deshabilitan la seguridad de mensajes y la de transporte. |
Ejemplo
La siguiente configuración establece el modo de seguridad en None.
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name=""MyBinding"">
<security mode=""None""/>
</binding>
</bindings>
</system.serviceModel>
Ejemplo
Modo de seguridad En todos los enlaces de servicio, existen cinco modos de seguridad posibles: