Snoop允许您在应用程序内查看并更改元素属性。对于开发人员来说,这是一个很好的资产,但在某些情况下可能是一个安全问题,例如当我们有喜欢在不应该寻找的地方寻找的用户时。有没有办法做一些事情来阻止诸如snoop snoop snoop snoop's应用程序的应用程序?

如果没有办法阻止它,您建议采取什么措施来最大程度地降低安全风险?

Snoop是一个实用程序,可让您浏览WPF应用程序的视觉树并查看和更改属性。当您试图调试某件事并且不知道发生了什么时,它非常有用。你可以找到更多 这里.

谢谢你。

有帮助吗?

解决方案

通过正确实施安全性。如果您的“安全性”可以用Snoop这样的工具挫败,那么您就做错了。

假设只有某些用户才能执行的命令。听起来您要执行的唯一位置是在UI级别(例如,禁用相应的按钮)。就是这样,您是对的 - 我可以轻松地使用Snoop启用按钮并执行命令。但是,如果您没有服务器,则应在服务器上执行安全约束,或者在命令执行逻辑中执行。基本上,应尽可能地实现安全性。 UI级别的安全性仅仅是为了方便用户。

其他提示

实际上,有一种方法可以检测您的应用程序是否被Snoop程序“窥探”。我要提供的解决方案不是银色子弹,如果有人真的想窥探您的应用程序,他们必须修改侦探源代码(这是一个开源项目)。

Snoop实际上做的是将一个组件注入您的应用程序中,并且注入的装配递归地检查了您的应用程序,从根部开始。换句话说,史努比实际运行 里面 你的申请。话虽如此,解决方案是在将侦探组件注入您的应用程序中时提出事件。

首先,您需要在应用程序中某个地方订阅装配体的事件(最好是乞讨):

AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad);

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

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

您可能需要为真实的银色解决方案增强此解决方案,但是至少该解决方案肯定会阻止当前最新版本的Snoop正在运行(没有代码修改)。更好的解决方案是检查是否没有将外部组件注入您的应用程序中。

但是,肯特仍然是正确的,因为像史努比这样的实用程序不应引起任何安全漏洞,因为不应在UI级别实施安全性。但至少这向您展示了如何防止人们“窥探”您的应用程序。

对一个很好的问题的好回答,

我想添加一个永远不要保存在您的数据附件上的密码的示例,因为Snoop还检查了UI的数据附件,因此,如果您使用正确的控制密码框,您会发现您无法绑定密码属性,意味着即使您窥探了应用程序,也无法获取密码,因为该密码未保存在任何属性中

但是我们发现许多人试图创建工作(帮助者,行为,USERCONTROL ...)来绑定密码,但他们忘记了Snoop可以这样做

因此,您的服务器绝不应该信任您的客户端,每次都应检查正确的特权(因为我们可以使用Fiddler for EXP嗅探客户端请求,然后重建Custome请求,以通过PASTER CLASITER APPLION SECURICE重建Custome请求)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top