如何Snoop证明你的wpf应用程序?

chi*_*nov 33 security wpf snoop

Snoop允许您查看应用程序内部并更改元素属性.它对开发人员来说是一笔巨大的财富,但在某些情况下可能会出现安全问题,例如我们的用户喜欢寻找他们不应该寻找的地方.有没有办法阻止像Snoop这样的应用程序"窥探"您的应用程序?

如果没有办法阻止它,你建议做什么来降低安全风险?

Snoop是一个实用程序,允许您浏览wpf应用程序的可视树并查看和更改属性.当您尝试调试某些内容并且不知道发生了什么时,它非常有用.你可以在这里找到更多.

谢谢.

小智 44

实际上有一种方法可以检测您的应用程序是否被snoop程序"窥探".我将给出的解决方案不是银弹,如果有人真的想要窥探您的应用程序,他们必须修改snoop源代码(这是一个开源项目).

snoop实际上做的是将一个程序集注入到您的应用程序中,并且注入的程序集以递归方式从根开始检查您的应用程序可视树.换句话说,snoop实际上是你的应用程序内部运行的.话虽如此,解决方案是在将窥探组件注入您的应用程序时引发事件.

首先,您需要在应用程序的某个位置订阅程序集加载的事件(最好是求助):

AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad);
Run Code Online (Sandbox Code Playgroud)

然后,您将像这样实现处理程序:

        void CurrentDomain_AssemblyLoad(object sender, AssemblyLoadEventArgs args)
    {
        if (args.LoadedAssembly.FullName.StartsWith("ManagedInjector"))
            MessageBox.Show("hey you, stop snooping");//and shut down your application.
    }
Run Code Online (Sandbox Code Playgroud)

您可能需要为真正的银弹解决方案增强此解决方案,但至少此解决方案肯定会停止当前运行的最新版本的snoop(不修改代码).更好的解决方案是检查没有外部程序集注入您的应用程序.

但是,Kent仍然是正确的,因为像Snoop这样的实用程序不应该导致任何安全漏洞,因为安全性不应该在UI级别实现.但至少这会向您展示如何防止人们"窥探"您的应用程序.

  • 这很棒.并结合Kent的答案正是我所寻找的. (3认同)
  • 这两个都是很好的答案,非常感谢你们 (2认同)

Ken*_*art 34

通过正确实施安全性.如果使用像Snoop这样的工具可以阻止你的"安全性",那么你做错了.

假设有一个只有某些用户才能执行的命令.听起来这是您执行此操作的唯一地方是在UI级别(例如,通过禁用相应的按钮).既然如此,你是对的 - 我可以轻松使用Snoop来启用按钮并执行命令.但是,如果没有服务器,则应该在服务器上强制执行安全约束,或者在命令执行逻辑中执行安全约束.基本上,安全性应该尽可能接近你想要保护的东西.UI级别的安全性仅仅是为了方便用户.