Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net WPF蒙皮安全问题_.net_Wpf_Security - Fatal编程技术网

.net WPF蒙皮安全问题

.net WPF蒙皮安全问题,.net,wpf,security,.net,Wpf,Security,我对.Net框架中的WPF真的是一个新手(别挡道)。我正在编写一个应用程序,通过将.xaml(目前是一个页面元素)文件加载到一个框架中,然后根据需要通过名称映射控件,界面非常可定制。我们的想法是建立一个社区,由对皮肤感兴趣的人组成,让我的应用程序以他们想要的方式皮肤化(很像Winamp) 现在问题出现了,由于我缺乏Xaml知识,是否有可能创建恶意的Xaml页面,当下载和使用这些页面时,可能会有其他嵌入的iFrame或其他元素嵌入html或调用带有恶意内容的远程网页?我相信情况可能是这样 如果是这

我对.Net框架中的WPF真的是一个新手(别挡道)。我正在编写一个应用程序,通过将.xaml(目前是一个页面元素)文件加载到一个框架中,然后根据需要通过名称映射控件,界面非常可定制。我们的想法是建立一个社区,由对皮肤感兴趣的人组成,让我的应用程序以他们想要的方式皮肤化(很像Winamp)

现在问题出现了,由于我缺乏Xaml知识,是否有可能创建恶意的Xaml页面,当下载和使用这些页面时,可能会有其他嵌入的iFrame或其他元素嵌入html或调用带有恶意内容的远程网页?我相信情况可能是这样


如果是这样的话,我有两个选择;我有一个自动化的过程,可以通过在允许下载(我认为这是最困难的)之前检查它的元素来删除这些类型的Xaml文件,或者在下载之前让人检查它们。是否有我不知道的替代方案可以使整个过程变得更简单?

如果您只是加载XAML而不采取任何预防措施,则有两个潜在问题:

  • XAML可以使用“x:Static”和“ObjectDataSource”对对象调用方法
  • XAML可以合并来自任意URI的HTML和图像,因此,如果HTML处理或图像处理代码中存在错误,恶意软件可能会利用它进行攻击
  • 解决方案有两个方面:

  • 限制可以实例化的类
  • 将Uri属性的设置仅限于相对源
  • 限制可以实例化的类

    幸运的是,类型只能出现在有限的地方:元素名、附加属性名、标记扩展名、类型为“type”的属性。通过禁止标准类型扩展之外的任何扩展,扫描所有用法并构建XAML中引用的类型的完整列表非常简单。这可以对照已知安全类型的白名单进行检查。不在安全列表中的任何引用类型都会导致拒绝XAML

    注意:内置XamlReader不允许您提供自定义IXamlTypeResolver。我使用了我编写的增强型XamlReader,它允许自定义IXamlTypeResolver,因此我可以在加载时和运行时检测XAML中引用的每个类型,而无需进行任何解析:只是无法解析不在白名单上的任何类型

    限制Uri属性的设置

    XAML的刚性结构再一次帮助了我们。可以轻松地扫描它,以确定将调用的每个属性设置器以及要设置的值或绑定(不要忘记样式和附加属性)。如果使用包Uri以外的任何绝对Uri,则可以拒绝XAML。使用标记扩展设置Uri的尝试也会被拒绝