Вы можете использовать подход, используемый веб-приложениями, чтобы убедиться, что утилиты автоматизации не могут быть легко написаны для заполнения форм. Это включает в себя отображение изображения с текстом, который пользователь должен ввести, прежде чем продолжить. Утилита автоматизации, которая может читать «текст» на экране, не может читать «графику» на экране так же легко (по крайней мере, без какого-либо обширного программирования OCR). Большинство из этих программ также деформируют текст, так что простой проход OCR потерпит неудачу.
Это довольно легко сделать, просто создайте несколько десятков изображений слов, из которых вы хотите опросить, выберите случайное число при первом запуске приложения (не забудьте запустить генератор случайных чисел), а затем выберите изображение для ввода пользователем. При выполнении сопоставления с изображением не делайте буквального сравнения, вместо этого сравнивайте что-то вроде CRC слова в изображении или чего-то подобного.
Чтобы лучше защитить пароли своих пользователей, вы также можете потребовать, чтобы они меняли их чаще. Если безопасность является строгим требованием, требуйте надежных паролей, которые должны быть изменены в соответствии с предварительно установленным стандартом. Например, требуется смешанный регистр, хотя бы одно числовое значение, хотя бы один символ и хотя бы 8 символов. Пароли не могут быть в стандартном словаре (не проходит проверку орфографии) или использовались в последние n раз. Срок действия пароля истекает через 20 дней.
Я также хотел бы убедиться, что вы на самом деле не храните пароль в базе данных. Вместо этого сохраните хэш-значение пароля. Единственный, кто должен знать текущий пароль пользователя, - это тот, кто его ввел.