2012-02-29 73 views
0

我有一个Rails 3.0.x应用程序,它显示一个包含Yahoo Web Player的页面。玩家扮演的Rails应用程序提供的音频文件,处理该文件请求使用SEND_DATA送mp3文件控制器:解决公共和私有IP的Opera安全和网站

send_data content, :filename=>dsLabel, :type=>mimeType, :disposition => 'attachment' 

(*)我也试过配置直列

该作品罚款在Safari,IE和FF。但是,在Opera中单击播放按钮并且音频从不播放,雅虎的代码被缩小了,并且有点难以确切地说出是什么问题,但我已经断定这不是JavaScript问题,据我所知。

有一点需要注意的是,当我在本地工作的同一网络上时,我们的DNS服务器将该站点解析为10.x.x.x LAN IP,否则它将解析为公共IP。

在Opera中,如果我打开首选项并在Trusted Websites->Secure Internal Hosts下添加主机名,然后重新加载页面音频播放良好。如果我将我的DNS更改为OpenDNS,它也可以正常播放。我似乎正在碰到一个我不完全了解的Opera安全策略问题。

在我看来,虽然内部我的主机解析为LAN IP,但一旦加载Opera认为它是公共站点,并且MP3不会下载,但它也解析为LAN IP,因此它不会看起来像公共/私人分歧。

我希望Stackoverflow社区中有更好的理解Opera安全性的人可以解释我在这里强制执行的策略。

回答

2

您可能遇到了“网络类型锁定”策略。基本上Opera会尝试记住某个站点是否首先解析为公共或私有IP。

此策略旨在防止网站首先向您发送一些代码的攻击,然后再重新配置自身以声明其IP地址是内部的。比如说,attack.example.com提供了一个链接到attack.example.com/intranet/menu.js的页面,稍后当您重新访问attack.example.com时,它的IP地址为10.0.0.1,您的Intranet正在运行,并且您的Intranet也恰好引用/intranet/menu.js文件。如果menu.js现在从缓存中运行,它可以在Intranet站点上做任何想做的事情。攻击完成。

因此,Opera可能不会根据您当前连接到的IP应用安全策略,而是根据它首次看到主机名解析到的IP。对不起,这是一个相当模糊的状态,但是当你有一些主机名可以解析为私人地址或公共地址时,你只占很小一部分;-)