好的,所以我试图访问生产服务器上的开发环境以检查问题,我知道我应该在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.
我还缺少什么?
答案 0 :(得分:3)
出于测试目的,在完成测试后注释掉整个块并删除文件。
理想情况下,您可以完全删除生产部署中的这些文件,因为它会打开潜在的安全漏洞:
对Symfony和一些忍者级技能有深入了解的人可能会绕过这个并导致心痛。
攻击者可能会假设其他类似的开发文件可能存在,例如/config.php
,并且也会利用这些文件。
再次,只需注释掉该块,而不是尝试将其编程为工作。无论如何,文件不应该存在于生产中。
答案 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