Безопасность (руководство по программированию на C#)
Обновлен: Ноябрь 2007
Безопасность является обязательным аспектом каждого приложения на языке C#, который должен учитываться на каждом этапе разработки, а не только после завершения разработки и реализации.
Рекомендации по безопасности, касающиеся языка C# в отдельности
Этот список не является исчерпывающим перечнем возможных проблем с безопасностью. В нем отмечены только некоторые наиболее распространенные проблемы, с которыми сталкиваются разработчики C#.
Ключевое слово checked используется для управления контекстом контроля переполнения при выполнении арифметических операций и преобразований с целочисленными типами.
Во всех случаях следует использовать для параметров наиболее ограниченные типы данных. Например, при передаче значения методу, описывающему размер структуры данных, следует использовать целое число без знака, а не просто целое число.
Не принимайте решений на основе имен файлов. Имена файлов могут быть выражены различными способами, и тест конкретного файла может быть обойден.
Ни в коем случае не включайте в код приложения пароли или иную секретную информацию.
Обязательно проверяйте входные данные, используемые для генерирования запросов языка SQL.
Проверяйте все входные параметры методов. Предназначенные для использования регулярных выражений методы из пространства имен System.Text.RegularExpressions полезны для проверки правильности формы входных данных, например адресов электронной почты.
Не показывайте информацию, содержащуюся в исключениях: в ней содержатся полезные для совершающего атаку лица подсказки.
Убедитесь, что приложение работает, запустив его с минимально возможными разрешениями. Только некоторые приложения требуют, чтобы пользователь был зарегистрирован в системе как администратор.
Не используйте собственные алгоритмы шифрования. Используйте классы из пространства имен System.Security.Cryptography.
Давайте своим сборкам строгие имена.
Не храните секретную информацию в XML-файлах или иных файлах настроек.
Тщательно проверяйте управляемый код, в который включен машинный код. Убедитесь, что машинный код является безопасным.
Будьте осторожны в случае использования делегатов, переданных приложению извне.
Запустите средство анализа кода среды Visual Studio для своих сборок, чтобы убедиться, что они соответствуют требованиям правил разработки для платформы Microsoft .NET Framework. Это средство также способно найти и предупредить о более чем 200 дефектах кода. Дополнительные сведения см. в разделе Выявление и исправление дефектов управляемого кода.
Другие источники информации, касающейся безопасности
Подробная информация о создании безопасного, надежного программного обеспечения приведена на следующих веб-узлах корпорации Майкрософт.
См. также
Основные понятия
Руководство по программированию в C#