在防火墙后面保护静态资产(javascript 和 css)的程序是什么?我有一个大量使用 javascript 的管理部分。我真的不想向公众公开代码。
我目前使用资产将我所有的 javascript 编译到 /web/admin/js/xyz.js 中的文件
有没有一种我忽略的简单方法可以做到这一点?
在防火墙后面保护静态资产(javascript 和 css)的程序是什么?我有一个大量使用 javascript 的管理部分。我真的不想向公众公开代码。
我目前使用资产将我所有的 javascript 编译到 /web/admin/js/xyz.js 中的文件
有没有一种我忽略的简单方法可以做到这一点?
您可以使用控制器来提供静态文件并保护该控制器。就像是:
/**
* 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 服务器慢得多,但根据您的负载,这可能不是问题。
为什么要“隐藏”这些管理 js 文件?js 不应该执行关键的身份验证或检查权限,而只是与执行此操作的 Sf2 API / 控制器交谈,并且如果读取则不应该是关键的。这是一个概念问题。
如果你害怕 lambda 用户/黑客看到这些 js 文件,你可以在 Assetic 中设置一个非常复杂的随机 js 输出。Symfony .htaccess 仅允许用户在知道其确切 URL 的情况下访问静态文件,他们无法列出您存储构建资产的存储库,防火墙会捕捉到这一点。
最后一个安全措施,使用 yui-minifier 和 Assetic 来缩小和混淆你构建的 js 文件。