为什么SendKeys做法不好?

时间:2013-08-15 13:55:29

标签: security methodology sendkeys

处理信号中断问题时,Ctrl-C SIGINT会关闭我的ssh会话。 (我相信你以前都听过这个,我当然也厌倦了 - 所以我不会再费心解释了。)总之,我可以通过使用{{1}来达到预期的效果。功能。

现在很多人不鼓励使用SendKeys,除非绝对必要。这种方法经常受到安全漏洞的影响,但我看到(但没有完全掌握)的唯一可行原因是它可以填充键盘缓冲区 - 如果处理不当,可能会导致不希望的系统结果。

其他每一个原因都只是通用的“它会导致安全问题。不要使用它。”我读到它可以显着帮助阻止在此过程中鼠标和键盘的交互,例如使用BlockInput。

我觉得这些天几乎任何事情都可能导致不受欢迎的系统结果。我想知道,具体来说,为什么在编程时使用这种方法是一种“不好的做法”,并且要真正理解这些安全漏洞。

1 个答案:

答案 0 :(得分:2)

在UAC之前使用作为有效的安全问题。例如,您可以发出ATL + CTRL + DEL或将信息从一个应用程序复制到恶意应用程序或在未经用户同意的情况下运行密钥脚本。

但很可能很多应用程序(甚至直接x)都会阻止SendKeys,你会得到安全例外。

使用 SendMessage SendInput 作为替代方案。

随着.NET 3和用户帐户控制的引入,这些差距已经关闭。事实上,Windows 8本周刚被政府评为安全。

如果您尝试发送密钥,某些应用程序(如Outlook)可能会引发异常(有充分理由)。此外,使用它的您的应用程序可能没有任何损害,潜在的危害是恶意软件滥用该功能。