CA2137: прозрачные методы должны содержать только проверяемые IL
Товар | Значение |
---|---|
Идентификатор правила | CA2137 |
Категория | Microsoft.Security |
Критическое изменение | Критическое |
Причина
Метод содержит непроверяемый код или возвращает тип по ссылке.
Примечание.
Это правило устарело. Дополнительные сведения см. в разделе "Устаревшие правила".
Описание правила
Это правило срабатывает при попытках прозрачного кода безопасности выполнить непроверяемый MSIL. Однако это правило не содержит полную проверку IL, и вместо нее использует эвристику для выявления большинства нарушений проверки MSIL.
Чтобы убедиться, что код содержит только проверяемую MSIL, запустите Peverify.exe (средство PEVerify) в сборке. Запустите PEVerify с параметром /transparent , который ограничивает выходные данные только непроверяемыми прозрачными методами, что приведет к ошибке. Если параметр /transparent не используется, PEVerify также проверяет критические методы, которые могут содержать неподключаемый код.
Устранение нарушений
Чтобы устранить нарушение этого правила, пометьте метод с SecurityCriticalAttribute помощью атрибута или SecuritySafeCriticalAttribute удалите неподключаемый код.
Когда лучше отключить предупреждения
Для этого правила отключать вывод предупреждений не следует.
Пример
Метод в этом примере использует неподключаемый код и должен быть отмечен атрибутом или SecuritySafeCriticalAttribute атрибутомSecurityCriticalAttribute.
using System;
using System.Security;
namespace TransparencyWarningsDemo
{
public class UnverifiableMethodClass
{
// CA2137 violation - transparent method with unverifiable code. This method should become critical or
// safe critical
// public unsafe byte[] UnverifiableMethod(int length)
// {
// byte[] bytes = new byte[length];
// fixed (byte* pb = bytes)
// {
// *pb = (byte)length;
// }
// return bytes;
// }
}
}
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по