温馨提示×

ubuntu上thinkphp项目如何进行安全加固

小樊
34
2026-01-01 07:13:58
栏目: 编程语言

Ubuntu上 ThinkPHP 项目安全加固清单

一 基础部署与运行环境

  • 将站点根目录指向 public,仅暴露入口文件;在 Nginx 中配置重写规则,隐藏 index.php。示例:
    server {
      listen 80;
      server_name your_domain.com;
      root /var/www/your_project/public;
      index index.php index.html;
      location / {
        try_files $uri $uri/ /index.php?$query_string;
      }
      location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 版本按实际调整
      }
    }
    
  • 生产环境务必关闭调试:将 config/app.php 中的 ‘app_debug’ => false;使用 .env 管理敏感配置,限制文件权限(如仅所有者可写)。
  • 正确设置运行目录权限:确保 runtimestorage 等可写目录仅对 Web 服务用户(如 www-data) 可写,其他目录只读;避免使用 777
  • 建议启用 HTTPS(如 Let’s Encrypt),并在 Nginx 强制跳转 HTTP→HTTPS

二 框架与应用层安全

  • 保持框架与依赖更新:定期升级 ThinkPHPComposer 依赖,及时修复已知漏洞。
  • 输入校验与过滤:对所有用户输入使用验证器/过滤器,配合 XSS 过滤与输出转义,避免直接输出到模板。
  • 防注入:优先使用 ORM预处理语句,禁止拼接 SQL;对复杂条件使用数组方式或参数绑定。
  • CSRF:启用表单令牌(如 TOKEN_ON),在表单中加入隐藏域并在服务端校验;对敏感接口采用 Token/JWTAPI Key 校验。
  • 防文件上传风险:限制上传类型/大小/路径,重命名文件,存储到非 Web 可直接执行目录,并对上传内容做安全扫描。
  • 安全编码:禁用危险函数(如 eval),避免动态包含与可变函数调用;对模板变量赋值与渲染保持最小权限与严格校验。

三 服务器与网络防护

  • 运行账户与权限:以 www-data 运行 PHP-FPM;项目目录属主设为 www-data,开发者加入 www-data 组以便部署,但代码目录保持只读;仅 runtime 等必要目录可写。
  • 禁止上传目录执行脚本:在 Nginx 中拦截上传目录的可执行脚本访问:
    location ~ ^/(uploads|assets)/.*\.(php|php5|jsp)$ {
      deny all;
    }
    
  • 防火墙与端口:启用 UFW/firewalld,仅开放 22/80/443 等必要端口;数据库端口不对公网开放。
  • 速率限制与防暴力:对登录、注册、找回等接口启用 限流/限速(如 Nginx 的 limit_req),降低爆破风险。
  • 错误与日志:生产环境关闭 display_errorserror_reporting,开启安全日志与访问日志,集中审计。

四 文件与目录安全

  • 目录列表:确保关闭目录浏览,必要时为每个目录放置 index.html 空文件,防止目录泄露。
  • 上传与静态资源隔离:将 uploads/assets 与代码目录分离,严格限制其执行权限;上传文件仅允许白名单后缀。
  • 运行目录最小化权限:如 runtimewww-data 可写,其他用户不可写不可读;版本控制文件(.git 等)禁止部署到 Web 目录。
  • 敏感文件保护:禁止 Web 访问 .env、配置文件、备份文件(如 .bak/.sql)与密钥文件;在 Nginx 中返回 403

五 持续化安全与合规

  • 安全审计与测试:定期进行 SAST/DAST 扫描、代码审计与渗透测试,重点排查 SQL 注入、XSS、文件包含/上传、代码执行 等高危点。
  • 第三方依赖管理:使用 Composeroutdated/security-advisories 检查依赖安全状态,及时升级。
  • 访问控制与合规:实施 RBAC 最小权限;对敏感操作引入 MFA;完善 CORS 策略与 日志留存;按 GDPR/个人信息保护法 等要求处理用户数据。
  • 监控与响应:建立 安全事件响应预案,持续监控异常流量与登录行为,发生事件可快速隔离与修复。

0