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