Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp_Prog_Guide.doc
Скачиваний:
16
Добавлен:
16.11.2019
Размер:
6.22 Mб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Consuming Unmanaged DLL Functions

Platform invoke is a service that enables managed code to call unmanaged functions implemented in dynamic link libraries (DLLs), such as those in the Win32 API. It locates and invokes an exported function and marshals its arguments (integers, strings, arrays, structures, and so on) across the interoperation boundary as needed.

This section introduces several tasks associated with consuming unmanaged DLL functions. In addition to the following tasks, there are general considerations and a link providing additional information and examples.

To consume exported DLL functions

  1. Identify functions in DLLs.

Minimally, you must specify the name of the function and name of the DLL that contains it.

  1. Create a class to hold DLL functions.

You can use an existing class, create an individual class for each unmanaged function, or create one class that contains a set of related unmanaged functions.

  1. Create prototypes in managed code.

[C#] Use the DllImportAttribute to identify the DLL and function. Mark the method with the static and extern modifiers.

  1. Call a DLL function.

Call the method on your managed class as you would any other managed method. Passing structures and implementing callback functions are special cases.