Безопасность (руководство по программированию на C#)

Обновлен: Ноябрь 2007

Безопасность является обязательным аспектом каждого приложения на языке C#, который должен учитываться на каждом этапе разработки, а не только после завершения разработки и реализации.

Рекомендации по безопасности, касающиеся языка C# в отдельности

Этот список не является исчерпывающим перечнем возможных проблем с безопасностью. В нем отмечены только некоторые наиболее распространенные проблемы, с которыми сталкиваются разработчики C#.

  • Ключевое слово checked используется для управления контекстом контроля переполнения при выполнении арифметических операций и преобразований с целочисленными типами.

  • Во всех случаях следует использовать для параметров наиболее ограниченные типы данных. Например, при передаче значения методу, описывающему размер структуры данных, следует использовать целое число без знака, а не просто целое число.

  • Не принимайте решений на основе имен файлов. Имена файлов могут быть выражены различными способами, и тест конкретного файла может быть обойден.

  • Ни в коем случае не включайте в код приложения пароли или иную секретную информацию.

  • Обязательно проверяйте входные данные, используемые для генерирования запросов языка SQL.

  • Проверяйте все входные параметры методов. Предназначенные для использования регулярных выражений методы из пространства имен System.Text.RegularExpressions полезны для проверки правильности формы входных данных, например адресов электронной почты.

  • Не показывайте информацию, содержащуюся в исключениях: в ней содержатся полезные для совершающего атаку лица подсказки.

  • Убедитесь, что приложение работает, запустив его с минимально возможными разрешениями. Только некоторые приложения требуют, чтобы пользователь был зарегистрирован в системе как администратор.

  • Не используйте собственные алгоритмы шифрования. Используйте классы из пространства имен System.Security.Cryptography.

  • Давайте своим сборкам строгие имена.

  • Не храните секретную информацию в XML-файлах или иных файлах настроек.

  • Тщательно проверяйте управляемый код, в который включен машинный код. Убедитесь, что машинный код является безопасным.

  • Будьте осторожны в случае использования делегатов, переданных приложению извне.

  • Запустите средство анализа кода среды Visual Studio для своих сборок, чтобы убедиться, что они соответствуют требованиям правил разработки для платформы Microsoft .NET Framework. Это средство также способно найти и предупредить о более чем 200 дефектах кода. Дополнительные сведения см. в разделе Выявление и исправление дефектов управляемого кода.

Другие источники информации, касающейся безопасности

Подробная информация о создании безопасного, надежного программного обеспечения приведена на следующих веб-узлах корпорации Майкрософт.

См. также

Основные понятия

Руководство по программированию в C#

Средства безопасности

Другие ресурсы

Безопасность в машинном коде и коде .NET Framework

Правила написания безопасного кода