Можно ли блокировать заполнители форм? - PullRequest
0 голосов
/ 16 июля 2009

У меня есть приложение Delphi (5), которое использует экран входа в систему (стандартное имя пользователя / пароль) и недавно обнаружило, что приложения хранения паролей могут идентифицировать поля входа в систему на экране, даже если они запутать и предложить сохранить информацию для пользователя. Из-за высокого уровня безопасности нашей программы мы не хотим этого допускать. До сих пор я не смог найти какую-либо информацию о том, как заблокировать эти приложения от обнаружения полей или указание им не пытаться. Возможен ли какой-либо из этих вариантов? Если нет, есть ли другой вариант?

Ответы [ 5 ]

5 голосов
/ 16 июля 2009

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

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

С другой стороны, если это приложение используется только из офиса, почему у пользователей есть приложения для управления паролями в защищенной среде?

4 голосов
/ 16 июля 2009

Вот несколько мыслей - знаете ли вы, как работает заполнитель форм?

1) можете ли вы динамически создавать поле имени пользователя / пароля во время выполнения? С полуслучайным именем компонента? Нетрудно создать пару компонентов в вашей форме входа в систему.

2) можете ли вы заменить стандартные элементы управления редактированием конечным автоматом нажатия клавиш, эффективно «подделав» вводы, используя (например) TLabels?

3) Блок вырезать / копировать / вставить из элементов управления редактирования?

4) Переопределить обработчик сообщений по умолчанию для вашей формы и проглотить любое событие нажатия клавиши, которое не «пришло» из вашего приложения?

1 голос
/ 17 июля 2009

Вы можете использовать подход, используемый веб-приложениями, чтобы убедиться, что утилиты автоматизации не могут быть легко написаны для заполнения форм. Это включает в себя отображение изображения с текстом, который пользователь должен ввести, прежде чем продолжить. Утилита автоматизации, которая может читать «текст» на экране, не может читать «графику» на экране так же легко (по крайней мере, без какого-либо обширного программирования OCR). Большинство из этих программ также деформируют текст, так что простой проход OCR потерпит неудачу.

Это довольно легко сделать, просто создайте несколько десятков изображений слов, из которых вы хотите опросить, выберите случайное число при первом запуске приложения (не забудьте запустить генератор случайных чисел), а затем выберите изображение для ввода пользователем. При выполнении сопоставления с изображением не делайте буквального сравнения, вместо этого сравнивайте что-то вроде CRC слова в изображении или чего-то подобного.

Чтобы лучше защитить пароли своих пользователей, вы также можете потребовать, чтобы они меняли их чаще. Если безопасность является строгим требованием, требуйте надежных паролей, которые должны быть изменены в соответствии с предварительно установленным стандартом. Например, требуется смешанный регистр, хотя бы одно числовое значение, хотя бы один символ и хотя бы 8 символов. Пароли не могут быть в стандартном словаре (не проходит проверку орфографии) или использовались в последние n раз. Срок действия пароля истекает через 20 дней.

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

0 голосов
/ 16 июля 2009

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

Если заполнитель форм использует копирование и вставку, это просто - просто заблокируйте сообщение WM_PASTE.

0 голосов
/ 16 июля 2009

Требуйте, чтобы ваши пользователи не использовали заполнители форм? Не знаю, какой контроль можно осуществлять на компьютерах ваших пользователей.

Или, возможно, найти способ определить, установлен ли в браузере плагин (например, Roboform), и установить окно предупреждения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...