提升CentOS上PHP安全性可从系统、PHP配置、网络及数据管理等方面入手,具体措施如下:
系统及软件更新
定期更新系统和PHP至最新版本,修复已知漏洞:
sudo yum update -y
sudo yum install epel-release -y
sudo yum install php php-fpm php-mysqlnd php-gd php-mbstring -y
配置PHP安全参数
编辑/etc/php.ini
,设置以下关键选项:
display_errors = Off
,避免敏感信息泄露。open_basedir = "/var/www/html:/tmp"
,约束脚本访问路径。disable_functions = exec,system,shell_exec,passthru
,防范命令注入。file_uploads = On
,并限制upload_max_filesize
(如2M)和post_max_size
。session.cookie_httponly = On
、session.cookie_secure = On
,防止XSS攻击。防火墙与网络隔离
使用Firewalld限制端口访问,仅开放HTTP(80)和HTTPS(443):
sudo yum install firewalld -y
sudo systemctl start firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
启用HTTPS加密传输
安装SSL证书,配置Web服务器(如Apache/Nginx)使用HTTPS:
sudo yum install mod_ssl -y # Apache
sudo certbot --nginx -d yourdomain.com # Nginx(需提前安装Certbot)
使用安全扩展与防护工具
opcache.enable = 1
。数据备份与权限管理
定期备份网站数据和数据库,存储至安全路径:
mkdir /backup
rsync -avz /var/www/html/ /backup/
mysqldump -u username -p database | gzip > /backup/db_backup.sql.gz
确保PHP运行用户(如apache
或nginx
)对文件权限最小化,避免使用root用户。
数据库安全防护
使用预处理语句防止SQL注入,例如PDO操作:
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(':username', $username);
$stmt->execute();
通过以上措施,可显著提升CentOS上PHP应用的安全性,需定期检查配置并关注安全漏洞动态。