security - 为什么 SendKeys 是不好的做法?

标签 security methodology sendkeys

在处理信号中断问题时,Ctrl-C SIGINT 会关闭我的 ssh session 。 (我相信你们以前都听过这个,我当然也厌倦了它 - 所以我不会费心进一步解释。)简而言之,我可以通过使用 SendKeys 来达到预期的结果 函数。

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

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

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

最佳答案

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

不过,很可能许多应用程序(甚至直接 x)会阻止 SendKeys,您将获得安全异常(exception)。

使用 SendMessageSendInput 作为替代。

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

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

关于security - 为什么 SendKeys 是不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18254235/

相关文章:

java - 谁在调用我的 HttpServletRequest?

methodology - 扩展识字编程?

使用 SendKeys 无法正常工作的 VBA 项目密码保护

methodology - 有哪些单独的开发人员编程方法?

java - 当有多个发送键时,Selenium sendkeys 清除值

java - SendKeys() 仅在我的表单的一个字段中不起作用

c# - 如何为加密算法创建加密 key ?

spring - 使用 Jasypt 和 Spring Security 3.1 时收到 NullPointerException

security - 基于 IP 的动态黑名单

java - "main() class"文件的最佳编码(布局)实践?