nginx如何处理phar的安全问题,修改配置禁止下载phar文件
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
大家已经学习了phar文件的生成及解包了,那么是不是准备大展拳脚,在实际项目中使用phar文件了呢。但是,且听苏南大叔多说一句,就是关于phar文件的安全问题,因为默认情况下,如果你知晓这个phar路径的话,您的phar文件的默认行为是下载!也就说会造成代码泄漏问题。
本文里面就是处理这种可以任意下载phar
文件情况的。
症状重现
下面的截图,展示了一个非常危险的配置行为,我们需要对这种状态进行修复!
修改nginx设置
因为大多数情况下,大家都是拿nginx+phpfpm配置站点的。这里,我们就说一下,如何修改nginx的配置文件,至于nginx的配置文件路径,不同的系统,不同的安装方法下,该配置文件的路径也是不一样的。所以,大家找到自己的配置路径即可。如果大家不知道自己的路径位置的话,这里有个非常好的小技巧,可以快速拿到你的配置值。那就是:
nginx -t
得到了配置路径线索后,您接下来需要做的就很简单了。下面贴一个苏南大叔的本地的配置文件,当然,您不一定需要按这个修改,每个人的需求都是不一样的。所以,仅供参考。
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的路径后,如果没有显示下载,就满足了本篇文章的需求了。但是这个时候,浏览器里面显示的是什么呢?你可能开启了一扇新的大门哦。具体的是个什么样的大门呢?请听苏南大叔下回分解。
更多phar的经验文章,请点击这里查看。https://newsn.net/tag/phar/ 。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。