Symfony无法访问生产服务器上的dev环境

时间:2015-09-02 12:59:14

标签: php symfony

好的,所以我试图访问生产服务器上的开发环境以检查问题,我知道我应该在URL的末尾添加app_dev.php example.com/app_dev并确保我的IP已添加到此文件中。

if (isset($_SERVER['HTTP_CLIENT_IP'])
    || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
    || !(in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1')) || php_sapi_name() === 'cli-server')
) {
    header('HTTP/1.0 403 Forbidden');
    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
}

但是我仍然看到了消息

You are not allowed to access this file. Check app_dev.php for more information.

我还缺少什么?

3 个答案:

答案 0 :(得分:3)

出于测试目的,在完成测试后注释掉整个块并删除文件。

理想情况下,您可以完全删除生产部署中的这些文件,因为它会打开潜在的安全漏洞:

  1. 对Symfony和一些忍者级技能有深入了解的人可能会绕过这个并导致心痛。

  2. 攻击者可能会假设其他类似的开发文件可能存在,例如/config.php,并且也会利用这些文件。

  3. 再次,只需注释掉该块,而不是尝试将其编程为工作。无论如何,文件不应该存在于生产中。

答案 1 :(得分:1)

我认为这些代码完全被打破了。据我所知,isset($_SERVER['HTTP_X_FORWARDED_FOR'])始终设置,即使是本地请求也是如此。

我不得不将支票重写为更强大的内容,正如它所建议的那样。

// Feel free to remove this, extend it, or make something more sophisticated.

答案 2 :(得分:0)

造成问题的原因是SAPI。如果您运行的是PHP内置服务器,则cli-server将为403,从而导致$allowed = array('127.0.0.1', 'fe80::1', '::1'); if(isset($_SERVER['HTTP_CLIENT_IP']) || isset($_SERVER['HTTP_X_FORWARDED_FOR']) || !in_array(@$_SERVER['REMOTE_ADDR'], $allowed)) { header('HTTP/1.0 403 Forbidden'); exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); } 错误。强烈建议您使用生产服务器上的内置服务器。

但是,如果您想使用内置服务器,则需要删除该检查,一切都应该正常工作。

Equals