Symfony 2静态资产授权(防火墙后面的.js)

问题描述:

在防火墙后面保护静态资产(javascript和css)的过程是什么? 我有一个管理部分大量使用javascript。我真的不想向公众公开这些代码。Symfony 2静态资产授权(防火墙后面的.js)

我目前/web/admin/js/xyz.js

使用assetic到文件编译我所有的JavaScript是有一个简单的方法来做到这一点,我俯瞰?

+0

据我所知,没有办法将静态文件放在安全下。期待这个问题的答案! – 2012-08-01 05:49:34

+0

你使用什么网络服务器?您可以使用它来保护IP或Cookie的请求。 – 2012-08-05 00:42:16

+0

Apache。我不想走这条路(这是不实际的),我想使用内置的symfony防火墙。 – calumbrodie 2012-08-05 21:52:24

您可以使用控制器来提供静态文件并保护该控制器。例如:

/** 
* Serves static javascript file. 
* We have configured /secure to be secured by some firewall 
* 
* @Route("/secure/xyz.js", name="static_xyz") 
*/ 
public function staticXyzAction() 
{ 

    $headers = array(
     'Content-Type' => 'text/javascript', 
    ); 

    return new Response(file_get_contents($this->get('kernel') 
     ->getRootDir().'../web/admin/js/xyz.js'), 200, $headers); 
} 

这只是您提供的数据的一个示例。显然,在你的最终代码中,被服务的文件应该位于某个不能被Web服务器直接访问的目录中。

这种方法明显的缺点是性能。 PHP服务静态文件要比Web服务器慢得多,但取决于您的负载,这可能不是问题。

+0

您可以让字体更大胆,在哪里说'正在服务的文件应该位于某些不能被Web服务器直接访问的目录? – 2012-08-06 05:48:02

+0

后端加载很轻,所以这将工作正常,我认为。我想如果我想使用防火墙,那么我没有选择,只能加载完整的框架。谢谢 – calumbrodie 2012-08-06 09:06:12

+0

@thecatontheflat我不确定在资产的范围内(这符合web根目录中的目录)是多么实用。我不能只是强制/ adminassets位置内的任何静态资产的任何请求通过前端控制器,并确保任何安全资产总是编译到该文件夹​​? – calumbrodie 2012-08-09 00:01:29

你为什么要“隐藏”这些admin js文件? js不应该执行严格的授权或检查权限,而只是与您的Sf2 Apis/Controllers进行交流,并且如果阅读则不应该是关键的。这是一个概念问题。

如果您害怕lambda用户/黑客看到这些js文件,您可以在Assetic中设置一个非常复杂的随机js输出。 Symfony .htaccess仅允许用户访问静态文件,只要他们知道确切的URL,他们不能列出存储建立资产的存储库,防火墙可以捕获这些文件。

最后的安全性测试,使用yui-minifier和Assetic来缩小和阻塞你建立的js文件。

+0

它们不包含任何重要的授权或检查权利。但这是我的专有应用程序代码 - 因此我不想将它留在可以下载的地方。你的方法可以工作(实际上),但它有点像默默无闻的安全性(尽管它本身不是安全风险,但是是商业风险)。混淆代码可以被反向设计。感谢评论 - 尽管如此,你已经为我的问题提供了一个实际的解决方案(如果这是一个问题)。 – calumbrodie 2012-08-11 12:30:09

+0

我也同意这有点矫枉过正,可能无用。 1.谁想要窃取JavaScript代码?特别模糊。如果它没有被设计成一个合适的库,为了一个非常普遍的目的,我会发现自己编写它更容易,如果它是你应该开源的:-) 2.那些想要窃取它的人需要URL无论如何,如果他们无法访问管理部分(Assetic使文件名很难猜到),他们不会这样做。他们仍然可以得到它,如果管理员发送给他们。客户端语言被提供给客户端。 – Julien 2013-01-09 10:45:49

+0

这些回应不应针对文件是否应该受到保护,无论出于何种原因,开发人员可能希望隐藏来自外部用户的文件。答案应该是帮助找到解决这个问题的办法。根据所问的问题,我发现这些回应最有帮助。 – Donovan 2013-07-20 00:26:09