2

Say I have a Windows GUI applications with a buttons on it. I am able to simulate a click on that button by using sendMessage winapi calls with BM_CLICK as the parameter to the call.

Now, from a security perspective, I do not want this to happen. i.e. my target process should ignore sendMessage calls from another process. Is there a provision to do this at all ? A way to authenticate the sendMessage calls ?

EDIT: In other words, how can I prevent applications such as Enabler, TurnitOn http://www.raymond.cc/blog/how-to-enable-and-access-disabled-grayed-out-buttons-windows-and-checkboxes/ from accessing functionality that is not meant to be accessed by the user ?

4

1 回答 1

2

如果应用程序在用户自己的上下文中运行,那么它只能做用户可以做的事情。经常被忽视的推论是,应用程序可以做的任何事情,用户都可以做。

因此,不必过多担心此类应用程序上的按钮是否“真正”禁用。用户总能找到另一种方法来完成按钮本来应该做的任何事情。(这可能是通过使用注册表编辑器,获取具有相同功能的另一个应用程序,或者,如果没有其他方便,他们可以在调试器中运行应用程序并强制它重新启用按钮。)

适当的解决方案取决于上下文:

  • 在许多情况下,最合适的解决方案是停止担心它。你应该能够信任你的用户,如果你不能,那是人力资源问题,而不是技术问题。

  • 如果应用程序为在更高环境中运行的东西提供接口,例如防病毒软件的前端,那么安全决策(是否允许用户这样做?)应该发生在后面结尾。也就是说,安全决策需要由不受用户控制的代码来决定。

  • 如果您是一名系统管理员,试图锁定一台 kiosk 机器 - 一台将由不受信任的用户使用的机器,通常使用某种类型的单个访客帐户 - 那么您使用 AppLocker 或软件限制策略来定义哪些应用程序允许用户运行。由于 Enabler 和 TurnItOn 不会出现在您的列表中,因此用户将无法运行它们来绕过您的安全策略。

于 2012-08-09T02:26:27.213 回答