3

在处理信号中断问题时,Ctrl-C SIGINT会关闭我的 ssh 会话。(相信大家之前都听过,我当然也受够了——所以我就不再解释了。) 简而言之,我可以通过使用该SendKeys功能来达到预期的效果。

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

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

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

4

1 回答 1

2

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

但很可能,许多应用程序(甚至是直接 x)会阻止 SendKeys,并且您会遇到安全异常。

使用SendMessageSendInput作为替代方案。

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

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

于 2013-09-20T16:30:02.993 回答