现在越来越多的主机商使用网上一些为宝塔专门定制的虚拟主机管理系统,出售虚拟主机,但是实际上从安全性和稳定性上来说,都是有缺陷的,下面就给大家分析一下原因。
首先宝塔所有站点的php
进程池(php-fpm
)是共享的,php-fpm
在配置文件中可以设置php
起始进程数量,最大进程数量以及最小进程数量(如下图)。然而宝塔
对于php-fpm
配置每个站点是共享的,也就是说如果一个网站访问量过大占用进程数过多,其它站点就没有进程数量可以用了。在这一点上宝塔还不如amh面板
,amh
对于每个站点可以单独配置php-fpm
,另外kangle 商业版
对于每个主机也是独立进程池的(现在kangle 商业版
早就免费开放使用了)。
然后说说最主要的安全性上的问题,很多人认为用宝塔开虚拟主机,只需要打开防跨站
,禁用危险 php 函数
就万事大吉了,实际上根本不是这样。大家都知道,php 的session
会保存在服务器的/tmp
目录里面,宝塔里面每个虚拟主机都可以访问服务器的/tmp
目录。如果某个网站程序后台的验证方式是session
,那么其它虚拟主机就可以获取到他的session
文件,从而不需要密码就可以直接进入网站后台。kangle
每个主机都是以独立的linux
用户运行的(如下图),因此他们生成的session
也是以不同的用户保存的,虽然kangle
也可以访问到服务器/tmp
目录,但是当前用户不能访问其它用户的文件,因此其它主机的session
的内容不会被泄露。kangle
这种每个主机独立用户、独立进程运行的方式非常适合出售虚拟主机,不论安全性和稳定性也都是所有面板里面最高的。因为kangle
不同主机是不同的用户,在kangle
里面即使是不开防跨站,也是安全的。之前发生过几次 kangle 被黑事件,是因为一些脚本没有设置好关键文件的权限(现在都已修复),和 kangle 本身安全性无任何关系。
宝塔6.9.9 版本已更新,PHP 的 SESSION 已经隔离