当前位置: 首页 > news >正文

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 等敏感文件

为什么这是最安全的?

  1. 全面性:不仅阻止标准扩展名,还包含了各种变体、备份文件和开发中常见的临时文件扩展名

  2. 精确匹配:使用 ^/uploads/ 确保规则只作用于上传目录,不影响其他位置

  3. 符合规范:完全遵循您提供的宝塔验证过的代码结构和写法

  4. 防御深度:两层防护,既防脚本文件又防隐藏文件

  5. 明确拒绝:使用 deny all; return 403; 明确拒绝访问并返回403错误

http://www.dtcms.com/a/389439.html

相关文章:

  • 练习:客户端从终端不断读取数据,通过UDP,发送给服务端,服务端输出
  • Android Studio报错 C Users User .gradle caches... (系统找不到指定的文件)
  • 微服务分页查询:MyBatis-Plus vs 自定义实现
  • Opera Neon:Opera 推出的AI智能代理浏览器
  • Java 基础知识整理:字面量、常量与变量的区别
  • 模型部署:(六)安卓端部署Yolov8分类项目全流程记录
  • android 查看apk签名信息
  • SQL提取国家名称与延伸词技巧
  • 通过 商业智能 BI 数据分析提升客流量和销售额
  • PostgreSQL 与 MySQL 谁的地位更高?——全方位对比分析
  • rust编写web服务08-配置管理与日志
  • 浏览器事件机制里,事件冒泡和事件捕获的具体区别是什么?在React的合成事件体系下有什么不同的?
  • 企业级实战:构建基于Qt、C++与YOLOv8的模块化工业视觉检测系统(基于QML)
  • 【Java】Ubuntu上发布Springboot 网站
  • 【入门级-算法-3、基础算法:贪心法】
  • Linux 网络
  • 【LVS入门宝典】探秘LVS透明性:客户端如何“看不见”后端服务器的魔法
  • 23届考研-C++面经(OD)
  • 运维安全06,服务安全
  • C++篇(9)list的模拟实现
  • Bugku-宽带信息泄露
  • LeetCode 845.数组中的最长山脉
  • 分布式存储与NFS:现代架构选型指南
  • SpringBoot三级缓存如何解决循环依赖的问题
  • 火山引擎 veCLI 发布,开启智能开发新模式
  • UE学习记录11----地形数据获取等高线
  • 【C++】STL--priority_queue(优先级队列)使用及其模拟实现、容器适配器和deque(双端队列)了解
  • 数学差能学人工智能吗?
  • Verilog语法学习EP10:串口接收模块
  • 使用obs同步录制窗口的高质量游戏模式视频