You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在cPanel中为Laravel 8.x实现代码与MySQL数据库的独立权限保护

Laravel 8.x虚拟主机部署的代码保护与数据库权限隔离方案

一、代码保护(避免客户复制/下载/篡改,不影响维护)

针对虚拟主机(以cPanel为例),可通过以下方式实现:

  • 文件权限与所有者配置:将Laravel核心目录(app、config、vendor、bootstrap等)及文件的所有者设为服务器系统用户(而非客户的cPanel账户),权限设置为:
    • 目录:700(仅所有者可读、写、执行)
    • 文件:600(仅所有者可读、写)
      PHP进程以服务器系统用户身份运行,不影响应用正常访问,但客户登录cPanel后无法读取、修改这些核心文件。注意:若虚拟主机的PHP运行用户与cPanel用户一致,此方法无效,需换用下方方案。
  • 核心代码移至web根目录外:将完整Laravel项目放在web根目录的上级目录(比如/home/your_cpanel_user/laravel_core),仅将public目录设为web根目录,然后修改public/index.php中的路径指向核心代码:
    require __DIR__.'/../laravel_core/vendor/autoload.php';
    $app = require_once __DIR__.'/../laravel_core/bootstrap/app.php';
    
    客户在cPanel文件管理器中只能看到public目录内容,核心代码所在的上级目录不在其访问范围内,无法复制或篡改。
  • 限制客户的文件访问权限:不给客户cPanel的文件管理器完全权限,仅提供FTP账户并限制其只能访问public目录;或启用cPanel的Jailed Shell,将客户的文件访问范围锁定在指定目录内,隔绝核心代码的访问路径。

二、数据库权限隔离(禁止开发者通过phpMyAdmin访问)

可通过多用户权限拆分实现:

  • 创建独立数据库用户:在cPanel的「MySQL Databases」中创建两个独立用户:
    1. 代码专用用户:仅授予Laravel运行必需的权限(如SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER),密码存入Laravel的.env文件,开发者仅知晓此密码,但该用户无phpMyAdmin登录权限(或仅允许本地访问,不通过cPanel界面登录)。
    2. 客户专用用户:授予ALL PRIVILEGES权限,由客户自行设置并保管密码,仅客户可使用此用户登录phpMyAdmin管理数据库。
  • 移除开发者的数据库访问权限:在cPanel的数据库管理界面中,将开发者的cPanel账户与该客户数据库的关联关系移除,确保开发者登录cPanel后,phpMyAdmin中无法看到或访问该数据库。
  • 限制远程访问:所有数据库用户默认仅允许本地访问(localhost),避免开发者通过远程数据库工具连接,进一步保障数据安全。

三、代码与数据库权限的独立密码设置

完全可以设置独立密码:

  • 代码使用的数据库用户密码独立存储在.env文件中,通过文件权限(600)确保客户无法读取;
  • 客户用于phpMyAdmin的数据库用户密码由客户自行设置,与代码用密码完全无关;
  • 若涉及虚拟主机的cPanel权限,开发者的cPanel账户密码也可与客户的cPanel账户密码独立设置,进一步隔离权限。

内容的提问来源于stack exchange,提问作者user6404606

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 05:10:41