TP8框架安全文件与文件夹权限相关设置
一、权限设置
所有目录755,
所有普通文件644
.env
文件最佳400(400不行给640
)
二、上传目录(/public/uploads)
nginx:配置禁止直接访问 .php
等可执行文件,防止上传的恶意脚本被运行。
2.1 代码是在宝塔中验证过并正确的
# 禁止/public/uploads/目录下的脚本文件执行location ~ ^/uploads/.*\.(php|php5|phar|phtml|pl|py|jsp|asp|sh|cgi|exe|js|cer)$ {deny all;return 403;}
2.2 AI给出的最安全配置(未验证)
# 禁止/public/uploads/目录下的脚本文件执行 - 最全面防护
location ~ ^/uploads/.*\.(php|php5|php7|php8|phtml|phpt|phar|inc|php\.bak|php\.sav|php\.old|php\.dist|php\.backup|php\.txt|php~|php_|php\.new|php\.orig|php\.save|sh|bash|pl|py|pyc|pyo|rb|js|jsp|asp|aspx|asa|asax|ascx|ashx|asmx|cer|swf|htaccess|htpasswd|ini|env|config|conf|log|sql|exe|dll|bat|cmd|com|cgi|svg|xml)$ {deny all;return 403;
}# 禁止访问上传目录中的隐藏文件(以点开头的文件)
location ~ ^/uploads/.*/\. {deny all;return 403;
}
1. 主防护规则(扩展名黑名单):
模式:
location ~ ^/uploads/.*\.(extensions...)$
路径匹配:
^/uploads/
确保只针对上传目录扩展名列表:包含了所有可能的可执行文件和脚本类型:
PHP相关:
php|php5|php7|php8|phtml|phpt|phar|inc
PHP备份文件:
php\.bak|php\.sav|php\.old|php\.dist|php\.backup|php\.txt|php~|php_|php\.new|php\.orig|php\.save
其他脚本:
sh|bash|pl|py|pyc|pyo|rb|js|jsp
ASP相关:
asp|aspx|asa|asax|ascx|ashx|asmx
配置文件:
htaccess|htpasswd|ini|env|config|conf
系统文件:
exe|dll|bat|cmd|com|cgi
其他危险类型:
cer|swf|log|sql|svg|xml
2. 隐藏文件防护规则:
模式:
location ~ ^/uploads/.*/\.
作用:阻止访问所有以点开头的隐藏文件和目录,防止攻击者上传
.env
、.ssh
、.git
等敏感文件
为什么这是最安全的?
全面性:不仅阻止标准扩展名,还包含了各种变体、备份文件和开发中常见的临时文件扩展名
精确匹配:使用
^/uploads/
确保规则只作用于上传目录,不影响其他位置符合规范:完全遵循您提供的宝塔验证过的代码结构和写法
防御深度:两层防护,既防脚本文件又防隐藏文件
明确拒绝:使用
deny all; return 403;
明确拒绝访问并返回403错误