Home » 安全运维 » nginx关于phar文件的安全处理

nginx关于phar文件的安全处理

发布于
如果本文对您有帮助,或者节约了您的时间,欢迎您打赏瓶饮料,建立一下友谊关系。

大家已经学习了phar文件的生成及解包了,那么是不是准备大展拳脚,在实际项目中使用phar文件了呢。但是,且听苏南大叔多说一句,就是关于phar文件的安全问题,因为默认情况下,如果你知晓这个phar路径的话,您的phar文件的默认行为是下载!也就说会造成代码泄漏问题。本文里面就是处理这种情况的。

症状重现

下面的截图,展示了一个非常危险的配置行为,我们需要对这种状态进行修复!

nginx关于phar文件的安全处理 - 020.png

修改nginx设置

因为大多数情况下,大家都是拿nginx+phpfpm配置站点的。这里,我们就说一下,如何修改nginx的配置文件,至于nginx的配置文件路径,不同的系统,不同的安装方法下,该配置文件的路径也是不一样的。所以,大家找到自己的配置路径即可。如果大家不知道自己的路径位置的话,这里有个非常好的小技巧,可以快速拿到你的配置值。那就是:

nginx -t

nginx关于phar文件的安全处理 - nginx-t.png

得到了配置路径线索后,您接下来需要做的就很简单了。下面贴一个苏南大叔的本地的配置文件,当然,您不一定需要按这个修改,每个人的需求都是不一样的。所以,仅供参考。

server {
    listen       80;
    server_name  php;
    # charset utf-8;
    # access_log  /var/www/www.abc.com/log/host.access.log;
    # error_log   /var/www/www.abc.com/log/error.log;
    # gzip off;
    root        /code/www/mine/php;
    index       index.php index.html index.htm;
    location / {
        if (!-e $request_filename) {
           rewrite  ^/(.*)$  /index.php/$1  last;
           break;
        }
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires 100d;
    }
    location ~ .*\.(js|css)?$ {
        expires 30d;
    }
    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    # location ~ \.php(/|$) {
    location ~ \.(php|phar)(/.*)?$ {
      fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;
      set $path_info $fastcgi_path_info;
      fastcgi_param PATH_INFO $path_info;

      fastcgi_pass   127.0.0.1:9000;
      fastcgi_index  index.php;
      include        fastcgi.conf;
      set $fastcgi_script_name2 $fastcgi_script_name;
      if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {
        set $fastcgi_script_name2 $1;
        set $path_info $2;
      }
      fastcgi_param   PATH_INFO $path_info;
      fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name2;
      fastcgi_param   SCRIPT_NAME   $fastcgi_script_name2;
    }
}

注意看这里,显示了最重要的修改点

# location ~ \.php(/|$) {
location ~ \.(php|phar)(/.*)?$ {
   fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;
   set $path_info $fastcgi_path_info;
   fastcgi_param PATH_INFO $path_info;
   //...
}

这样设置并生效之后,phar文件就不会显示下载了。附赠一下nginx的重载配置的命令。

nginx -s reload

结论

在浏览器里面,敲入phar的路径后,如果没有显示下载,就满足了本篇文章的需求了。但是这个时候,浏览器里面显示的是什么呢?你可能开启了一扇新的大门哦。具体的是个什么样的大门呢?请听苏南大叔下回分解。

nginx关于phar文件的安全处理 - nginx_test.png

更多phar的经验文章,请点击这里查看。https://newsn.net/tag/phar/

想要获取完整源码或相关软件?点击这里获取相关内容

关注互联网发展,关注苏南大叔的《程序如此灵动~》博客
本文章来自:程序如此灵动~
博客地址为:https://newsn.net/
原文地址为:https://newsn.net/say/nginx-phar-safe.html
上一篇好文:利用phar-composer打包phar源码
下一篇好文:apache的handler模式下,phar安全设置
尊重原创内容,转载请保留链接信息,感谢您的阅读

如果本文对您有帮助,或者节约了您的时间,欢迎您打赏瓶饮料,建立一下友谊关系。
欢迎关注微信公众号“苏布斯看世界”:
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。

相关文章

添加新评论