Silverlight 4';s WriteableBitmap*真的*以DRM的名义破坏合法的跨域访问?

Silverlight 4';s WriteableBitmap*真的*以DRM的名义破坏合法的跨域访问?,silverlight,silverlight-4.0,cross-domain,writeablebitmap,Silverlight,Silverlight 4.0,Cross Domain,Writeablebitmap,在本文中,我们解释了当任何部分来自外部域(比如免费图像服务器)时,它都会阻止读取访问 进一步阐述了这是为了“DRM”。我猜有人会在Silverlight中编写一个电影开膛手,其中包含来自另一个域的电影,然后重新捕获它,这是一个很大的威胁。。。除了认识到你可以重写血腥的xap,因为它下来的电线,然后它是相同的领域!但这不是这里也不是那里 无论如何,很明显,我正在尝试使用WritableBitmap导出用户当前设置的屏幕截图;但是我被这个跨域的问题阻止了 在最新版本的Silverlight中是否真的

在本文中,我们解释了当任何部分来自外部域(比如免费图像服务器)时,它都会阻止读取访问

进一步阐述了这是为了“DRM”。我猜有人会在Silverlight中编写一个电影开膛手,其中包含来自另一个域的电影,然后重新捕获它,这是一个很大的威胁。。。除了认识到你可以重写血腥的xap,因为它下来的电线,然后它是相同的领域!但这不是这里也不是那里

无论如何,很明显,我正在尝试使用WritableBitmap导出用户当前设置的屏幕截图;但是我被这个跨域的问题阻止了

在最新版本的Silverlight中是否真的没有支持的方法来实现这一点?没有crossdomain.xml或clientaccesspolicy.xml?Silverlight是一个巨大的“去你的”,它设置了半心半意的安全路障,阻碍了开发人员,但并没有阻止攻击者,这难道不是对它的致命打击吗


编辑:这个问题与相同。

你的观点被很多为了合法目的而尝试这样做的开发者所认同。有一些解决办法,所有的都不是哈克就是比扎罗。但这可能是我见过的最好的一个:

只要再读一遍,就会发现您并不是在寻找crossdomain.xml解决方案。此页面还有一些其他选项(同样,没有“伟大”的解决方案):

另外,不确定这是否是一个选项,但作为OOB应用程序,您的应用程序将不限于ClientAccessPolicy.xml或CrossDomain.xml中的安全检查。您可以选择浏览器外吗


编辑: 通过对帖子和评论的进一步审查,我相信(Tom,请确认这一点)不需要获得用户在自己的盒子上运行的SL应用程序实例的屏幕截图(类似的东西会处理得很好)


相反,它是为用户的屏幕拍照(与PrtSc ish相同)。在这种情况下,这要困难得多,但并非不可能。Rui展示了他是如何做到这一点的,但它依赖于用户机器上已经存在的组件。Jeremy get在这方面更具创造性,这将有效地允许访问

这种可写位图行为与DRM无关,与安全性有关。如果您试图拍摄的屏幕截图显示的图像元素包含来自不同域的内容,则该域必须具有具有适当权限的crossdomain.xml文件。您可以联系域所有者,让他们将crossromain.xml放在域的根目录中

另外,完全信任OOB应用程序也应该这样做,因为它不检查crossdomain.xml

好的,如果您的可视化树中有,并且您尝试从中创建WriteableBitmap,则WriteableBitmap的像素访问将被锁定,无论是否为crossdomain.xml。(你真可耻,微软)。好消息是,您可以使用以下解决方法:使用WebClient加载图像;使用OpenReadCompleted处理程序中的流对图像调用SetSource。创建您的WriteableBitmap并注意Pixels属性如何不再引发安全异常。远不是理想的,但可管理的。

如获得silverlight的唯一方法所解释的,它允许您在不需要任何以下任何操作的情况下从可写位图中获取内容:

  • 浏览器外
  • 服务/代码/应用程序/根目录GAC以其他方式安装在用户计算机上
  • 高度信任

是代理内容并欺骗silverlight使其认为所有内容都来自同一个域

在链接线程中,Silverlight MVP明确表示crossdomain.xml不会覆盖该限制。你测试过这一点并确认他错了吗?OOB并不能解决这个问题;它所做的一切就是放松与套接字和权限相关的限制。@Tom Ritter:我想我很困惑——这怎么解决不了问题呢?我想我应该说“提升权限OOB”。即使完全信任OOB也不会否定WriteableBitmap的DRM像素内容。ClientAccessPolicy/CrossDomain与此无关-跨域像素访问与它们无关。@Tom Ritter:好的,根据你的回答,我想我可能误解了你的需要。请参见上面的编辑。