适当的权限,所有权允许php解析文件的内容,但不允许从web浏览器访问


Proper permissions, ownership to allow php to parse contents of file but disallow access from web browser

我有一个文件,其中包含敏感数据,我在php中解析如下:

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

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

    linux服务器
  • php作为'root'运行
  • apache运行为'apache'
  • secretstuff目录中唯一的文件是credentials.ini
  • 我没有权限修改apache或php设置

我似乎不能得到所有权和权限的正确组合。我要么在parse_ini_file命令上以'permission denied'结束,要么我能够浏览credentials.ini文件的内容。

如果您不限于.ini扩展名,您可以将其更改为.php,并将第一行注释为ini-comment和PHP多行注释,最后一行注释为ini-comment和关闭PHP多行注释:

; <?php /*
[section1]
parameter = value
[section2]
parameter.foo = bar
; */

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

您根本不需要将ini文件放在您的web浏览器下——它可以放在系统上的任何地方。至于将其留在web浏览器下,但阻止其显示,您可以在Apache配置中或使用.htaccess文件执行此操作,并保留UNIX文件权限:

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