php 和 httpd 之间的访问层次结构

php 和 httpd 之间的访问层次结构

目标是控制对 php/httpd 应用程序 owncloud 的访问,使其能够访问特定的已识别 IP 地址。php 和 httpd 似乎都有实现此目的的机制,php 是通过具有受信任域构造的 config.php 文件实现的:

'trusted_domains' => 
  array (
    0 => 'localhost',
    1 => '10.0.0.0/16',
    2 => 'aa.bb.cc.dd',
  ),

并且 http 是通过 conf.d 目录中的 owncloud.conf 进行的:

<Directory /var/www/http/owncloud/>
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride none
     Order Allow, Deny
     Deny from all
     Allow from 10.0.0.0/16
     Allow from aa.bb.cc.dd
</Directory>

这些的作用是什么?它们是串行的还是互斥的?为了限制 php 访问,是否需要更改 config.php 配置?有没有办法通过 httpd.conf 来限制 php 访问?这个问题有意义吗?

答案1

  • 限制 Apache 端的访问是一种更通用的方法,适用于所有内容,包括静态文件。这种方法通常更安全,因为请求在 PHP 解释器看到之前就被阻止了,这使得利用 PHP 应用程序中的漏洞变得不可能(或至少更加困难)。
  • 限制 PHP 应用程序端的访问仅适用于该 PHP 应用程序,并且范围非常有限。如果不对 Apache 服务器端进行额外配置,则无法阻止对不受 PHP 应用程序控制的任何内容的访问,例如静态图像或其他资源。它也无法阻止请求首先到达 PHP 解释器,从而使其容易受到软件漏洞的攻击。此外,在许多 Web 应用程序中,这种访问控制从一开始就不存在,因为系统希望依赖 Web 服务器来实现此目的。

简而言之:在 Apache 访问控制可用的情况下,我总是更喜欢它而不是 PHP 应用程序提供的访问控制。

答案2

首先是 Apache ACL,然后是 PHP ACL。您不能在 PHP 中包含之前在 Apache 中排除的内容。

相关内容