Поделиться через


Вопросы безопасности: элементы управления Microsoft Windows

В этом разделе содержатся сведения о соображениях безопасности, связанных с элементами управления Windows. Сведения в этом разделе не содержат всех, что вам нужно знать о проблемах безопасности, используйте его в качестве отправной точки и ссылки на эту область технологий.

Взаимосоединение между компьютерами распространено; Главной проблемой разработчика должна быть безопасность приложений. В следующих разделах рассматриваются некоторые потенциальные проблемы безопасности, которые следует учитывать при программировании элементов управления Windows.

Сообщения управления, завершаемые значением NULL

Многие сообщения управления и макросы имеют строковые параметры. Часто эти сообщения не проверяют входные строки, в частности, они не проверяют завершение '\0'. При вызове сообщения, использующего строку в качестве параметра, явно укажите, что строка завершается значением NULL.

Использование строки

При программе элементов управления Windows необходимо управлять строками. Почти каждый элемент управления требует вставки текста. Например, чтобы заполнить поле списка, необходимо загрузить строки в элемент управления. Так как использование строк неправильно вызывает переполнение буфера, примите меры предосторожности, чтобы избежать этого риска безопасности.

Дополнительные сведения о переполнении буферов см. в написании защищенного кода Майклом Ховардом и Дэвидом LeBlanc, Microsoft Press, 2002 и рекомендациями по api безопасности.

Проверка входных данных

Следующие сообщения управления могут представлять проблемы с безопасностью.

Если текст изменяется между вызовом, чтобы получить длину текста и время отображения или использования текста, может произойти переполнение буфера. Чтобы избежать этого, необходимо проверить строку перед его использованием. Кроме того, сообщения, извлекающие текст, CB_GETLBTEXT, TB_GETBUTTONTEXTи TTM_GETTEXT, не имеют параметра размера буфера, который представляет потенциал для переполнения буфера.

При использовании CB_GETLBTEXT или SB_GETTEXTнеобходимо сначала вызвать CB_GETLBTEXTLEN или SB_GETTEXTLENGTH, чтобы получить размер буфера. Некоторые из этих сообщений, TB_GETBUTTONTEXT, LVM_GETISEARCHSTRINGи TVM_GETISEARCHSTRING, можно вызвать с помощью значения параметра NULL NULL, чтобы получить длину строки перед вызовом сообщения для получения строки.

Сообщение, которое следует обратить особое внимание на строку состояния, SB_GETTIPTEXT сообщение. Это сообщение не позволяет запрашивать длину строки, которую необходимо извлечь.

Использование пароля

Если вы используете элементы управления редактированием, защищенные паролем (ES_PASSWORD стиле), буфер, содержащий полученный текст, должен быть установлен на ноль как можно скорее, чтобы избежать предоставления пароля пользователя в памяти.

Оповещения системы безопасности

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

Особенность Смягчение
DlgDirListComboBox Убедитесь, что буфер, используемый функцией, может быть записан в и имеет значение NULL.
CB_GETLBTEXT Вызовите CB_GETLBTEXTLEN, чтобы получить размер буфера, а затем вызовите CB_GETLBTEXT, чтобы получить строку.
LVM_GETISEARCHSTRING Вызовите сообщение с значением параметра NULL, чтобы получить размер буфера, а затем вызовите сообщение во второй раз, чтобы получить строку.
SB_GETTEXT Вызовите SB_GETTEXTLENGTH, чтобы получить размер буфера, а затем вызовите SB_GETTEXT для получения строки.
TB_GETBUTTONTEXT Вызовите сообщение с значением параметра NULL, чтобы получить размер буфера, а затем вызовите сообщение во второй раз, чтобы получить строку.
TTM_GETTEXT Это сообщение не предоставляет способ узнать или указать размер буфера.
TVM_GETISEARCHSTRING Вызовите сообщение, передав значение параметра null NULL, чтобы получить размер буфера, а затем вызовите сообщение во второй раз, чтобы получить строку.

 

другие ресурсы

Microsoft Security

безопасности

Центре реагирования майкрософт по безопасности

рекомендации по api безопасности