2015-07-10 52 views
1

我有它的敏感数据,我在PHP解析文件,如下所示:适当的权限,所有权,让PHP解析文件的内容,但不允许从Web浏览器访问

define('__PATHSECRET__', dirname(__ROOT__) . '/secretstuff'); 
$credFilePath = __PATHSECRET__ . '/credentials.ini'; 
$credArray = parse_ini_file($credFilePath); 

我应该怎么设置目录和文件的权限,以便我可以使用上面的代码解析文件,但是阻止该文件的内容显示在Web浏览器中?

  • Linux服务器
  • PHP运行作为 '根'
  • 运行Apache '阿帕奇'
  • 在secretstuff目录中唯一的文件是credentials.ini
  • 我没有访问修改Apache或PHP设置

我似乎无法得到所有权和权限的正确组合。我最终在parse_ini_file命令中“拒绝了权限”,或者我可以浏览credentials.ini文件的内容。

+1

是在你的根目录文件?你可以将它移动到webroot之外 – frz3993

+0

是否可以在不将文件移出webroot的情况下执行此操作?如果这是唯一的方法,我可能可以访问做到这一点。 –

+0

那么,如果你是在你的webroot,你给apache的读权限,它可以显示在浏览器中,如果你不apache php模块将无法读取它。还要确保apache自动索引被禁用。 – frz3993

回答

2

如果不限于.ini扩展,你可以把它改成.php并注释掉第一线既INI-评论和PHP的多行注释和最后一行的INI-评论和关闭PHP多行注释:

; <?php /* 
[section1] 
parameter = value 

[section2] 
parameter.foo = bar 

; */ 

如果您使用浏览器请求此文件,它将允许您使用parse_ini_file()并仅显示;

1

您不需要将ini文件放在您的webroot下 - 它可以位于系统的任何位置。至于离开它的根目录下,但阻断其显示,你可以这样做你的Apache配置内部或与.htaccess文件,并独自离开的UNIX文件权限:

<Directory "/var/www/secretstuff"> 
    Order allow,deny 
    Deny from all 
</Directory>