CA2139: Los métodos transparentes no pueden usar el atributo HandleProcessCorruptingExceptions
Elemento | Valor |
---|---|
RuleId | CA2139 |
Category | Microsoft.Security |
Cambio importante | Problemático |
Causa
Un método transparente se marca con el atributo HandleProcessCorruptedStateExceptionsAttribute.
Nota
Esta regla está en desuso. Para más información, consulte Reglas en desuso.
Descripción de la regla
Esta regla desencadena cualquier método que sea transparente e intenta controlar una excepción de daño de proceso mediante el atributo HandleProcessCorruptedStateExceptionsAttribute. Una excepción de daño de proceso en la versión 4.0 de CLR es una clasificación de excepciones como AccessViolationException. El atributo HandleProcessCorruptedStateExceptionsAttribute solo lo pueden utilizar los métodos críticos para la seguridad, y se omitirá si se aplica a un método transparente. Para controlar las excepciones que dañan al proceso, este método se debe convertir en crítico para la seguridad.
Cómo corregir infracciones
Para corregir una infracción de esta regla, quite el atributo HandleProcessCorruptedStateExceptionsAttribute o marque el método con el atributo SecurityCriticalAttribute o SecuritySafeCriticalAttribute.
Cuándo suprimir las advertencias
No suprima las advertencias de esta regla.
Ejemplo
En este ejemplo, un método transparente se marca con el atributo HandleProcessCorruptedStateExceptionsAttribute y producirá un error en la regla. El método también se debe marcar con el atributo SecurityCriticalAttribute o SecuritySafeCriticalAttribute.
using System;
using System.Runtime.InteropServices;
using System.Runtime.ExceptionServices;
using System.Security;
namespace TransparencyWarningsDemo
{
public class HandleProcessCorruptedStateExceptionClass
{
[DllImport("SomeModule.dll")]
private static extern void NativeCode();
// CA2139 violation - transparent method attempting to handle a process corrupting exception
[HandleProcessCorruptedStateExceptions]
public void HandleCorruptingExceptions()
{
try
{
NativeCode();
}
catch (AccessViolationException) { }
}
}
}
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de