Техническое примечание TN2150

Используя безопасный ввод событий справедливо

Это Техническое примечание обсуждает надлежащее использование EnableSecureEventInput функционируйте и разветвления, которые процесс имеет на других процессах, когда эта функция используется неправильно. Это объясняет изменения в поведении порядка подачи заявки, прерывающих события клавиатуры, когда процесс использует EnableSecureEventInput неправильно.

Введение
Обсуждение
Используя безопасный ввод событий справедливо
Сводка
Ссылки
История версии документа

Введение

EnableSecureEventInput был реализован в Mac OS X 10.3, для обеспечения безопасных средних значений для процесса для защиты ввода с клавиатуры к пользовательскому полю ввода данных. Эта функция защищает запись клавиатуры так, чтобы события клавиатуры не могли быть прерваны процессом прерывания клавиатуры. Обновление системы защиты реализовало для Mac OS X 10,4 изменений, как система влияет на процессы прерывания клавиатуры, когда процесс использует EnableSecureEventInput. Если Вы обрабатываете вызовы EnableSecureEventInput, это Техническое примечание предоставляет информацию о том, как должным образом поддерживать безопасный ввод.

Обсуждение

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

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

Процессы прерывания клавиатуры полезны разнообразными способами - например, процессом Доступности для поддержки специализированного устройства клавиатуры, как способ добавить макро-возможность к приложениям, записать пользовательские действия для воспроизведения позже или настроить функциональность клавиатуры. Критическое рассмотрение состоит в том, что процесс прерывания клавиатуры мог быть реализован для получения частной информации, если предоставленный события клавиатуры. Для защиты от такого доступа Mac OS X обеспечивает EnableSecureEventInput функция для использования с пользовательскими процессами ввода данных.

Исходная реализация EnableSecureEventInput было таково, что, когда процесс включил безопасную входную запись и имел клавиатурный фокус, события клавиатуры не были переданы для прерывания процессов. Однако, если бы безопасный процесс записи был перемещен в фон, то система продолжала бы передавать события клавиатуры этим процессам прерывания, так как клавиатурный фокус не был к больше безопасному процессу записи.

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

Используя безопасный ввод событий справедливо

Если Вы реализуете в частности вызывающий процесс EnableSecureEventInput, Ваш процесс несет ответственность использовать безопасный ввод событий справедливо. Включите безопасный ввод событий только, когда он необходим, и отключите его, когда он больше не необходим. Ранее, когда клавиатурный фокус изменился на различный процесс, система проигнорировала безопасный входной аспект процесса. Как упомянуто ранее, если Ваш процесс включил безопасный ввод и оставил его, включил, когда процесс переместился в фон, система позволит процессам прерывания клавиатуры получать события клавиатуры. Это больше не имеет место. Система больше не будет передавать события клавиатуры процессов прерывания клавиатуры, если Ваш процесс включил безопасный ввод, даже когда Ваш процесс перемещен в фон. Это теперь становится ответственностью Вашего процесса вызвать DisableSecureEventInput когда безопасный ввод записи не требуется, такой как тогда, когда Ваш процесс обнаруживает, что это перемещается в фон. Напоминание, если Ваш процесс будет использовать механизмы Углерода или Какао для поддержки безопасного ввода, то безопасный входной процесс будет обработан системой должным образом.

Для процессов, реализующих таможню средние значения для защищенного ввода данных, цель состоит в том, чтобы подражать реализации Системы безопасного ввода событий. Использовать EnableSecureEventInput только при необходимости, когда клавиатурный фокус перемещается в частное поле ввода данных, это. Когда клавиатурный фокус изменяется на незащищенное текстовое поле, или когда Ваш процесс обнаруживает, что это теряет клавиатурный фокус, вызвать DisableSecureEventInput. Можно проверить, включен ли безопасный ввод событий путем вызова IsSecureEventInputEnabled.

Вызвать DisableSecureEventInput сказать систему, что больше нет неотложной потребности обеспечить безопасный ввод для Вашего процесса. Система восстановит доступ событий клавиатуры для ввода с клавиатуры процессов прерывания. Когда Ваш процесс обнаруживает, что прибывает в передний план, и он все еще имеет потребность обеспечить безопасный ввод событий, вызвать EnableSecureEventInput восстановить безопасность клавиатуры. Следующим эти инструкции использование безопасного ввода Вашим процессом будет очевидно для процессов прерывания клавиатуры.

Сводка

Процесс никогда не должен включать безопасный ввод событий для общего ввода текста или просто включать эту функцию для срока действия приложения. Рассмотрите эффект, который этот вызов будет иметь на другие процессы. Mac OS X предоставляет Вашему процессу средние значения для безопасного ввода событий. Шаги были предприняты для обеспечения безопасного ввода событий. Ваш процесс несет большую ответственность отключить безопасный ввод событий, когда это не гарантировано. Используйте безопасный ввод записи справедливо. Включите его только при необходимости. Отключите его, когда это не будет необходимо.

Ссылки



История версии документа


ДатаПримечания
08.06.2007

Новый документ, описывающий надлежащее использование EnableSecureEventInput.