我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

书接上文,apache对接php有两种模式,大多数情况下,使用的是handler模式。但是个别情况下,也会使用fastcgi模式,也就是说,php文件都是交予php-fpm处理的,这种情况下,phar的安全性又如何呢?答案将在本文中揭晓。

苏南大叔:apache的fastcgi模式下,如何安全设置phar文件? - apache-fastcgi-phar
apache的fastcgi模式下,如何安全设置phar文件?(图4-1)

前言

苏南大叔:apache的fastcgi模式下,如何安全设置phar文件? - 000
apache的fastcgi模式下,如何安全设置phar文件?(图4-2)

读取本文内容之前,请自行查看phpinfo里面关于server api的值,是否是FPM/FastCGI,以确定您的环境,是否和本文中苏南大叔所描述环境一致。

如何配置apache对接php-fpm,请参考苏南大叔的这篇文章。https://newsn.net/say/apache-fastcgi-php.html

修改apache的配置文件

httpd.conf关键点如下:

LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_fcgi_module libexec/apache2/mod_proxy_fcgi.so
#LoadModule php7_module libexec/apache2/libphp7.so
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
Include /private/etc/apache2/other/*.conf
Include /private/etc/apache2/extra/httpd-vhosts.conf
<Directory />
    AllowOverride none
    #Require all denied
    allow from all
</Directory>

other/php7.conf:

<IfModule php7_module>
    AddType application/x-httpd-php .phar
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
</IfModule>
<IfModule proxy_module>
    <FilesMatch \.php|\.phar$>
        SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>
</IfModule>
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

在这里有三条IfModule指令:

  • IfModule php7_module已经失效,大家无视即可。
  • IfModule proxy_module,这里是敲黑板重点,注意里面的phar字样。
  • IfModule dir_module,这个设置默认首页的,我们从php7_module里面提出来了。

效果对比

对于启用phar前后,phar的处理对比图如下:

苏南大叔:apache的fastcgi模式下,如何安全设置phar文件? - 003
apache的fastcgi模式下,如何安全设置phar文件?(图4-3)

苏南大叔:apache的fastcgi模式下,如何安全设置phar文件? - 004
apache的fastcgi模式下,如何安全设置phar文件?(图4-4)

结论

我们通过修改apache的配置,成功的识别并保护了phar源码,很开心的节奏。

更多有关phar的相关经验文件,苏南大叔提示您,点击这里查看:https://newsn.net/tag/phar/

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php    apache