在CentOS系统中配置PHP安全设置,可以遵循以下步骤:
首先,确保你的系统和PHP都是最新的。
sudo yum update -y
sudo yum install epel-release -y
sudo yum install php php-mysqlnd php-gd php-xml php-mbstring php-pear php-bcmath -y
编辑PHP的配置文件/etc/php.ini
。你可以使用任何文本编辑器,例如vi
或nano
。
sudo vi /etc/php.ini
在disable_functions
指令中添加一些危险的函数,以防止它们被滥用。
disable_functions = eval,assert,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
为了防止敏感信息泄露,建议将错误报告级别设置为E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED & ~E_USER_NOTICE & ~E_USER_DEPRECATED
。
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED & ~E_USER_NOTICE & ~E_USER_DEPRECATED
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
限制文件上传的大小和类型,以防止恶意文件上传。
upload_max_filesize = 2M
post_max_size = 8M
file_uploads = On
确保会话ID是随机生成的,并且会话数据存储在安全的位置。
session.cookie_secure = On
session.cookie_httponly = On
session.cookie_samesite = Strict
session.gc_maxlifetime = 1440
如果你使用的是MySQL数据库,确保连接是安全的。
mysqli.allow_local_infile = Off
mysqli.allow_persistent_connections = Off
mysqli.cache_size = 2000
mysqli.max_links = -1
mysqli.reconnect = Off
根据你使用的Web服务器(如Apache或Nginx),重启相应的服务以应用更改。
sudo systemctl restart httpd
sudo systemctl restart nginx
考虑使用一些安全模块来增强PHP的安全性。
ModSecurity是一个开源的Web应用防火墙(WAF),可以保护你的PHP应用程序免受各种攻击。
sudo yum install mod_security -y
sudo systemctl enable mod_security
sudo systemctl start mod_security
如果你使用的是PHP-FPM,确保它也进行了适当的安全配置。
sudo vi /etc/php-fpm.d/www.conf
在www.conf
文件中,确保以下设置:
security.limit_extensions = .php .php3 .php4 .php5 .php6 .php7 .phtml .pl .py .jsp .asp .htm .shtml .sh .cgi
然后重启PHP-FPM服务:
sudo systemctl restart php-fpm
通过以上步骤,你可以显著提高CentOS系统上PHP的安全性。记得定期检查和更新你的系统和PHP版本,以保持最佳的安全状态。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读:centos php配置中的安全设置