Набор правил "Правила безопасности" для управляемого кода
Чтобы максимально способствовать отправке уведомлений о потенциальных проблемах безопасности, нужно включить набор правил "Правила безопасности корпорации Майкрософт"
Правило |
Описание |
---|---|
Проанализируйте SQL-запросы с целью выявления уязвимостей безопасности |
|
Перехватите исключения, не являющиеся CLS-совместимыми, с помощью общих обработчиков |
|
Проверьте императивную безопасность |
|
Не объявляйте изменяемые ссылочные типы, доступные только для чтения |
|
Поля массивов не должны быть доступны только для чтения |
|
Обеспечьте безопасность утверждений |
|
Проверьте использование deny и permit only |
|
Проверьте объявляемые параметры безопасности типов значений |
|
Проверьте видимые обработчики событий |
|
Указатели не должны быть видимыми |
|
Защищенные типы не должны предоставлять поля |
|
Безопасность метода должна быть надмножеством типа |
|
Вызовите GC.KeepAlive при использовании собственных ресурсов |
|
Методы APTCA должны вызывать только методы APTCA |
|
APTCA-типы должны расширять только базовые APTCA-типы |
|
Проверьте использование SuppressUnmanagedCodeSecurityAttribute |
|
Запечатайте методы, соответствующие частным интерфейсам |
|
Обеспечьте безопасность конструкторов сериализации |
|
Статические конструкторы должны быть частными |
|
Не используйте косвенное представление методов с запросами компоновки |
|
Запросы компоновки переопределения должны быть идентичны базовым |
|
Поместите уязвимые предложения finally во внешний блок try |
|
Запросы компоновки типа требуют запросы наследования |
|
Константы критической безопасности должны быть прозрачными |
|
Типы критической безопасности могут не участвовать в эквивалентности типа |
|
Конструкторы по умолчанию должны быть по меньшей мере такими же критическими, как конструкторы по умолчанию базового типа |
|
Делегаты должны привязываться к методам с согласованной прозрачностью |
|
Методы должны сохранять согласованную прозрачность при переопределении базовых методов |
|
Сборки уровня 2 не должны содержать требования LinkDemand |
|
Элементы не должны иметь конфликтующие пометки прозрачности |
|
Прозрачные методы должны содержать только проверяемые IL |
|
Прозрачные методы не должны вызывать методы с атрибутом SuppressUnmanagedCodeSecurity |
|
Прозрачные методы могут не использовать атрибут HandleProcessCorruptingExceptions |
|
Прозрачный код не должен ссылаться на элементы, критичные в плане безопасности |
|
Прозрачные методы не должны удовлетворять требования LinkDemand |
|
Прозрачный код не должен быть защищен с помощью требований LinkDemand |
|
Прозрачные методы не должны использовать требования безопасности |
|
Прозрачный код не должен загружать сборки из массивов байтов |
|
Прозрачные методы не должны быть снабжены атрибутом SuppressUnmanagedCodeSecurityAttribute |
|
Типы должны быть настолько же критическими, как их базовые типы и интерфейсы. |
|
Прозрачные методы могут не использовать утверждения безопасности |
|
Прозрачные методы не следует вызывать в машинном коде |
|
Сборки должны иметь допустимые строгие имена |