CA2145: прозрачные методы не должны быть снабжены атрибутом SuppressUnmanagedCodeSecurityAttribute
Товар | Значение |
---|---|
Идентификатор правила | CA2145 |
Категория | Microsoft.Security |
Критическое изменение | Критическое |
Причина
Прозрачный метод, метод, помеченный атрибутом или тип, содержащий метод, помечается SecuritySafeCriticalAttribute атрибутом SuppressUnmanagedCodeSecurityAttribute .
Примечание.
Это правило устарело. Дополнительные сведения см. в разделе "Устаревшие правила".
Описание правила
Методы, SuppressUnmanagedCodeSecurityAttribute украшенные атрибутом, имеют неявный LinkDemand, помещенный на любой метод, который вызывает его. Для этой проверки LinkDemand требуется, чтобы вызывающий код был критическим с точки зрения безопасности. Маркировка метода, использующего SuppressUnmanagedCodeSecurity с атрибутом SecurityCriticalAttribute , делает это требование более очевидным для вызывающих методов.
Устранение нарушений
Чтобы устранить нарушение этого правила, пометьте метод или тип атрибутом SecurityCriticalAttribute .
Когда лучше отключить предупреждения
Для этого правила отключать вывод предупреждений не следует.
Код
using System;
using System.Runtime.InteropServices;
using System.Security;
namespace TransparencyWarningsDemo
{
public class SafeNativeMethods
{
// CA2145 violation - transparent method marked SuppressUnmanagedCodeSecurity. This should be fixed by
// marking this method SecurityCritical.
[DllImport("kernel32.dll", SetLastError = true)]
[SuppressUnmanagedCodeSecurity]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool Beep(uint dwFreq, uint dwDuration);
}
}
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по