CA5122. Объявления P/Invoke не могут быть надежными с точки зрения безопасности
Товар | Значение |
---|---|
Идентификатор правила | CA5122 |
Категория | Microsoft.Security |
Критическое изменение | Критическое |
Причина
Объявление P/Invoke отмечено атрибутом SecuritySafeCriticalAttribute.
[assembly: AllowPartiallyTrustedCallers]
// ...
public class C
{
[SecuritySafeCritical]
[DllImport("kernel32.dll")]
public static extern bool Beep(int frequency, int duration); // CA5122 - safe critical p/invoke
}
В этом примере C.Beep(...)
отмечен как надежный с точки зрения безопасности метод.
Примечание.
Это правило устарело. Дополнительные сведения см. в разделе "Устаревшие правила".
Описание правила
Методы отмечаются как SecuritySafeCritical, если они выполняют критически важные для безопасности операции и являются безопасными для использования в прозрачном коде. Одно из основных правил модели прозрачности безопасности заключается в том, что прозрачный код не может напрямую вызывать машинный код с помощью P/Invoke. Поэтому, если метод P/Invoke отметить как надежный с точки зрения безопасности, это не приведет к тому, что прозрачный код будет вызывать его, и может ввести в заблуждение при анализе безопасности.
Устранение нарушений
Чтобы сделать P/Invoke доступным для прозрачного кода, предоставьте для него надежный с точки зрения безопасности метод-оболочку.
[assembly: AllowPartiallyTrustedCallers
class C
{
[SecurityCritical]
[DllImport("kernel32.dll", EntryPoint="Beep")]
private static extern bool BeepPinvoke(int frequency, int duration); // Security Critical P/Invoke
[SecuritySafeCritical]
public static bool Beep(int frequency, int duration)
{
return BeepPInvoke(frequency, duration);
}
}
Когда лучше отключить предупреждения
Для этого правила отключать вывод предупреждений не следует.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по