【问题标题】:Symfony 2 app.php vs app_dev.phpSymfony 2 app.php 与 app_dev.php
【发布时间】:2012-04-24 19:42:28
【问题描述】:

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

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    嗯,开箱即用,标准发行版在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.');
    }
    

    但是,正如 cmets 所指出的,您不会受制于这种方法。例如,如果您正在运行 Apache,您可以 add basic HTTP Authentication 到开发和测试控制器。

    【讨论】:

    • 还应该提到,不将 app_dev.php 文件上传到生产服务器也是一种选择。
    • 例如,Capifony 在部署时会删除所有 app_*.php 文件,以防止将奇怪的环境泄漏到生产服务器。
    • 任何黑帽黑客都可以生成绕过该控制器检查所需的所有 $_SERVER 设置。虽然它会过滤大多数懒惰的攻击者,但如果您需要从服务器运行开发控制台,则需要最少的基本 http 身份验证。 最好的想法是假设它不属于服务器并坚持这种做法进行正常部署。
    猜你喜欢
    • 2013-06-15
    • 2017-02-17
    • 2013-05-17
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多