2009-07-16 31 views
0

我有一个使用登录屏幕(标准用户名/密码)的Delphi(5)应用程序,最近才发现密码存储应用程序可以识别屏幕中的登录字段,即使它们被混淆,并提供为用户保存信息。由于我们计划的高度安全性,我们不想允许这样做。到目前为止,我还没有找到任何有关如何阻止这些应用程序检测字段或告诉他们不要尝试的信息。这些选择中的任何一个都可能?如果不是,还有其他选择吗?可能阻止表单填充?

回答

4

以下是一些想法 - 你知道填充物是如何工作的吗?

1)您是否可以在运行时动态创建用户名/密码框?用半随机组件名称?在登录表单的创建中创建几个组件并不困难。 2)你能用一个按键状态机替换标准的编辑控件吗,有效地使用(例如)TLabels'伪造'输入吗?

3)从剪辑控件中剪切/复制/粘贴?

4)覆盖您的表单的默认消息处理程序,并吞下任何未从您的应用程序“来”的按键事件?

+0

标签建议做到了。该应用程序现在不会被视为具有登录屏幕。由于我已经有了一个键盘处理程序(想要从ctrl-Fkey组合中保留),因此在处理按键命中时很简单。 – 2009-07-16 21:30:29

+0

很酷,很高兴它有帮助。 :-) – robsoft 2009-07-17 08:08:31

+0

最有可能形成具有maskedit属性的填充捕获字段。所以'假'标签方法就行。 您也可以添加验证码字段。另外一个领域可能会令人讨厌,但为了安全起见,这是一枝带刺的玫瑰。 (密码技术也是另外一个字段:) – user114285 2009-07-17 10:29:40

0

要求您的用户不使用表单填充可能?不知道可以对用户的计算机施加什么样的控制。

或者,也许找到一种方法来检测浏览器上是否安装了插件(如Roboform),并且放置了一个警告框?

+0

这不是一个浏览器应用程序,它是一个独立的Win32可执行文件。虽然我可能没有在上面说清楚,对不起。 – 2009-07-16 17:44:39

0

我不认为有办法区分设备驱动程序内部生成的键盘事件和使用keybd_event函数从另一个程序生成的键盘事件。

如果表单填充只是使用复制&粘贴,那么它很简单 - 只需阻止WM_PASTE消息。

5

用户总能找到一种方法来对自己的系统进行控制。您可以轻松地阻止自动表单填写工作,因为您可以防止用户将便笺后贴到其监视器上。

处理这样一个事实,只要您相信用户维护安全,您就必须处理用户的弱点。您可以通过限制个人用户的能力来减轻这种影响,但从长远来看,您所能做的只是希望用户充分关心自己的个人信息以确保其正确性。另一方面,如果此应用程序仅在办公室使用,为什么用户在安全的环境中使用密码管理应用程序?

1

您可以采取Web应用程序所使用的方法,以确保自动化实用程序无法轻松写入来填写表单。这涉及显示其中包含一些文本的图像,用户必须先输入才能继续。可以在屏幕上阅读“文本”的自动化实用程序无法轻松读取屏幕上的“图形”(至少不是没有进行一些广泛的OCR编程)。这些程序中的大多数还会扭曲文本,导致简单的OCR传递失败。

这很容易做到,只需创建几十个左右的图片,您可以随意选择一个数字,当应用第一次启动时(不要忘记种子随机数发生器)和然后选择一个图像供用户键入。当对图像进行匹配时,不要进行文字比较,而应与图像中的单词的CRC或诸如此类的东西进行比较。

为了更好地保护用户密码,您还可以要求他们更频繁地更改密码。如果安全性要求很高,则需要使用必须根据预设标准更改的强密码。例如,需要混合大小写,至少一个数字值,至少一个符号和至少8个字符。密码不能在标准字典中(拼写检查失败),或者在最近n次使用过。密码在20天后过期。

我也会确保你实际上不会在数据库中存储密码。而是存储密码的哈希值。唯一一个应该知道用户当前密码的人是输入密码的人。