小智 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级别实现.但至少这会向您展示如何防止人们"窥探"您的应用程序.
Ken*_*art 34
通过正确实施安全性.如果使用像Snoop这样的工具可以阻止你的"安全性",那么你做错了.
假设有一个只有某些用户才能执行的命令.听起来这是您执行此操作的唯一地方是在UI级别(例如,通过禁用相应的按钮).既然如此,你是对的 - 我可以轻松使用Snoop来启用按钮并执行命令.但是,如果没有服务器,则应该在服务器上强制执行安全约束,或者在命令执行逻辑中执行安全约束.基本上,安全性应该尽可能接近你想要保护的东西.UI级别的安全性仅仅是为了方便用户.
| 归档时间: |
|
| 查看次数: |
5524 次 |
| 最近记录: |