c# - MAF 安全 : How to prevent a "Man-in-the-Middle" Attack

标签 c# .net security man-in-the-middle maf

我使用 MAF 为用户/客户提供增强我们软件的可能性。加载项将以有限的权限运行,并且对于我们和客户来说可能是不受信任的代码,以防他们从第 3 方开发人员那里购买了加载项。

在我们的例子中,主机和主机端适配器以完全权限在主 AppDomain 中运行,而加载项和加载项端适配器几乎没有权限运行。

当我通过 AddInStore.FindAddIns 获得插件 token 时,我只能验证插件程序集本身是否来自它应该来自的供应商。如果攻击者交换了 Add-In 程序集,那么我们会发现并不会激活该程序集。但无论如何,由于它在几乎没有权限的情况下运行,攻击者无法真正损害应用程序和环境(主机、内联网等)。

但也有可能是攻击者替换了主机端适配器组件。攻击者只需将新程序集放在正确的文件夹中。由于它以完全权限运行,因此攻击者代码可能会真正损害应用程序和环境。由于攻击者位于主机和加载项之间(或多或少是中间人),它还可以更改两者之间交换的数据。

当我调试我的代码并在调试器中检查加载项 token 时,我可以看到加载项商店用来构建管道的不同程序集的所有路径:

Add-In Token

不幸的是,有关所采取的程序集的重要信息是私有(private)的,我无法访问它们。

是否有访问此信息的解决方法?

最佳答案

防止这种情况的一种方法是不要在每次启动应用程序时都重建管道。如果管道 DLL 与 PipelineSegments.Store 中的 DLL 和 key 不同,则不会加载 DLL。

关于c# - MAF 安全 : How to prevent a "Man-in-the-Middle" Attack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31109466/

相关文章:

ruby-on-rails - 将密码字段设置为 attr_accessible 是否安全?

C# 和 Ubuntu - 如何获取主屏幕的大小?

java - 当经过身份验证的用户访问未 protected 页面时,getRemoteUser() 返回 null

c# - 常量首字母缩略词的命名约定

css - 用于删除 .css 文件中特定条目的正则表达式

c# - 单元测试 ReSharper 和 NUnit 给出不同的结果

c# - 关于 As<>() 方法在 AutoMapper 中的作用的详细信息

python - PyWin32 能否为用户提供 "too-much"访问 Win32 API 的权限?

c# - 在 Silverlight 中根据计时器更改属性

c# - 函数 'IotHubTrigger' 的监听器无法启动。物联网中心