需启用防跨站攻击隔离保护机制:一、关闭面板“防跨站攻击”开关,避免框架兼容问题;二、手动配置open_basedir限制路径;三、通过Nginx location添加PHP执行范围限制;四、为各网站分配独立PHP-FPM进程池实现用户级隔离。

如果您在宝塔面板中托管多个PHP网站,且担心某一网站因漏洞被入侵后横向渗透至其他站点,则需启用防跨站攻击隔离保护机制。以下是具体设置步骤:
一、关闭网站目录的“防跨站攻击”开关
该选项在宝塔面板中实际为PHP运行环境下的open_basedir限制功能,启用后会强制限制PHP脚本仅能访问指定目录,但部分现代框架(如Laravel)依赖跨目录加载机制,强行开启反而导致500错误或资源无法加载。因此,对已明确运行目录结构的站点,应关闭此项以避免兼容性问题。
1、登录宝塔面板,点击左侧菜单“网站”,进入网站列表页面。
2、在目标网站操作栏中,点击“设置”按钮。
3、在弹出窗口中,点击左侧导航栏的“网站目录”。
4、找到“防跨站攻击(仅PHP生效)”复选框,将其取消勾选。
5、确认“运行目录”已设置为正确的入口目录(例如Laravel项目应设为/public),然后点击“保存”。
二、通过PHP配置文件手动加固open_basedir
若仍需保留基础隔离能力,可绕过面板图形界面,在PHP配置中精细化控制open_basedir路径范围,既满足安全要求又不破坏框架逻辑。
1、在宝塔面板左侧菜单中,点击“软件商店”,找到已安装的PHP版本,点击右侧“设置”。
2、在PHP设置页面中,点击“配置修改”选项卡。
3、在配置文件中查找open_basedir参数所在行。
4、将原值修改为仅包含当前网站根目录及必要系统路径,例如:
/www/wwwroot/your-site.com:/tmp:/proc。
5、保存配置后,点击“重载配置”使更改生效。
三、使用Nginx location规则限制PHP脚本执行范围
通过Nginx配置层面对PHP脚本的可执行路径进行硬性约束,防止恶意上传的PHP文件在非预期位置被执行,属于更底层的隔离手段。
1、在网站设置窗口中,点击左侧“配置文件”选项卡。
2、在Nginx配置代码中,定位到location ~ \.php$区块。
3、在该区块内添加以下限制语句:
fastcgi_param PHP_VALUE "open_basedir=/www/wwwroot/your-site.com:/tmp";
4、确保该语句位于include enable-php-*.conf;之后,避免被覆盖。
5、保存配置并点击“重载Nginx”。
四、为每个网站分配独立PHP-FPM进程池
不同网站使用各自隔离的PHP-FPM子进程池,实现用户级资源与权限分离,即使一个站点的PHP进程被劫持,也无法影响其他站点的运行上下文。
1、在宝塔面板左侧菜单中,点击“软件商店”,找到对应PHP版本,点击“设置”。
2、切换至“服务”选项卡,点击“PHP-FPM配置”右侧的“编辑”按钮。
3、在打开的www.conf文件中,复制一段完整的[www]进程池配置块。
4、将复制块顶部的[www]改为[site_a],并修改其中的user、group为独立系统用户(如www-site-a)。
5、在对应网站的Nginx配置中,将fastcgi_pass指向新进程池:
fastcgi_pass unix:/tmp/php-cgi-site_a.sock;
6、重启PHP-FPM服务。










