改进/更好的方式为预编译资产提供安全保障?

时间:2013-09-17 07:32:55

标签: ruby-on-rails security assets

由于我在my / assets文件夹之外提供特定.SWF文件的原因。 这个想法是这样的:

def get_swf
    send_file("#{Rails.root}/app/assets_protected/game.swf", :disposition => "inline")
end

这允许我在此方法中执行某些检查(用户登录等),而不是将此.SWF作为my / assets文件夹的一部分。

我在页面中使用swfobject.js加载此方法,但直接调用此URL只会将.SWF文件作为下载提供。

  • 是否有人建议在直接调用url时阻止下载文件?
  • 有没有更好的方法来解决这个问题?

我不高兴文件被下载,也许这可以解决。

2 个答案:

答案 0 :(得分:3)

我认为这里有两个问题。第一个问题是你是否可以阻止直接下载某些内容,但仍然将其加载到浏览器中。

这根本不可能。如果他们要查看.swf,它已经在他们的计算机上了。它是浏览器缓存的一部分,因此您无法同时将其提供给用户并阻止他们直接获取。

第二个问题是保护此文件。我在这里看到了几个选项。

  • 仅允许某些受信任的用户访问该文件。 (听起来你可能正在做这样的事情)

  • 让人们可以正常访问您的.swf,但要提取您担心的机密功能,并将其置于服务器端的Web服务调用中。例如,如果您有一些基于某些变量计算用户得分的动作脚本,您将删除该功能,将其放在服务器端的Web服务中,并从您的动作脚本中调用它(我认为这是可能的,但我不是Flash开发人员。)

  • 这只是一种缓解,但有一些工具可以混淆swf文件。这可能足以让您有信心让SWF进入野外。了解这不是防弹的,可以进行逆向工程。 Example SWF obsfucator

答案 1 :(得分:2)

您应该尝试使用send_data代替send_file来利用rails的数据(视频)流功能。

您可以在此讨论主题streaming-video-from-a-non-public-directoryrails-3

中找到一些提示