CA2139: прозрачные методы могут не использовать атрибут HandleProcessCorruptingExceptions
Товар | Значение |
---|---|
Идентификатор правила | CA2139 |
Категория | Microsoft.Security |
Критическое изменение | Критическое |
Причина
Прозрачный метод помечается атрибутом HandleProcessCorruptedStateExceptionsAttribute .
Примечание.
Это правило устарело. Дополнительные сведения см. в разделе "Устаревшие правила".
Описание правила
Это правило запускает любой метод, который является прозрачным и пытается обработать повреждение процесса с помощью атрибута HandleProcessCorruptedStateExceptionsAttribute . Исключение, поврежденное процессом, — это классификация исключений среды CLR версии 4.0 для таких AccessViolationExceptionисключений. Атрибут HandleProcessCorruptedStateExceptionsAttribute может использоваться только критичными в плане безопасности методами и будет игнорироваться при применении для прозрачного метода. Для обработки поврежденных исключений этот метод должен стать критически важным для безопасности или безопасной безопасности.
Устранение нарушений
Чтобы устранить нарушение этого правила, удалите HandleProcessCorruptedStateExceptionsAttribute атрибут или пометьте метод с SecurityCriticalAttribute помощью атрибута или атрибута SecuritySafeCriticalAttribute .
Когда лучше отключить предупреждения
Для этого правила отключать вывод предупреждений не следует.
Пример
В этом примере прозрачный метод помечается атрибутом HandleProcessCorruptedStateExceptionsAttribute и завершится сбоем правила. Метод также должен быть помечен атрибутом SecurityCriticalAttribute или атрибутом 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) { }
}
}
}
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по