2012-04-24 35 views
3

我正在使用Symfony 2 php框架,它有几个不同的使用环境:开发,生产和测试。 app.php前端控制器访问生产环境,app_dev.php前端控制器访问开发环境。任何熟悉Symfony的人都可以建议将开发环境限制为开发人员的最佳方式是什么?我不希望我的网站应用程序的开发版本能够被我的网站用户查看,但它们应该仅限于使用生产环境。Symfony 2 app.php vs app_dev.php

回答

10

那么,标准发行版在top of the dev controller上有一个基于IP的警戒检查。

// This check prevents access to debug front controllers that are deployed by accident to production servers. 
// Feel free to remove this, extend it, or make something more sophisticated. 
if (isset($_SERVER['HTTP_CLIENT_IP']) 
    || isset($_SERVER['HTTP_X_FORWARDED_FOR']) 
    || !in_array(@$_SERVER['REMOTE_ADDR'], array(
     '127.0.0.1', 
     '::1', 
    )) 
) { 
    header('HTTP/1.0 403 Forbidden'); 
    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); 
} 

但是,正如注释所表明的那样,您并不赞同这种方法。例如,如果您正在运行Apache,则可以将add basic HTTP Authentication发送给开发人员和测试控制器。

+1

还应该提到,仅仅不将app_dev.php文件上传到生产服务器也是一种选择。 – Sgoettschkes 2012-04-24 21:49:13

+0

例如,Capifony会在部署时删除所有应用程序_ *。php文件,以防止将陌生环境泄漏到生产服务器。 – 2013-03-14 08:56:11

+1

任何黑帽黑客都可以生成绕过该控制器中的检查所需的所有$ _SERVER设置。虽然它会过滤大多数懒惰的攻击者,但如果您需要从服务器运行开发控制台,则最少需要基本的http身份验证。 **最好的**想法是假定它不属于服务器,并坚持正常部署的做法。 – 2013-03-25 01:52:56

相关问题