温馨提示×

Linux服务器上PHP安全如何保障

小樊
33
2025-12-06 08:53:31
栏目: 云计算

Linux服务器上PHP安全加固清单

一 基础系统与运行环境

  • 保持系统与PHP、扩展、Web服务器为最新稳定版,及时应用安全补丁,减少已知漏洞面。
  • 最小权限运行服务:Web/PHP-FPM使用非root专用用户(如www-data),通过ACL与最小权限目录/文件访问配合,避免越权读写。
  • 配置防火墙/安全组仅开放必要端口(如22/80/443),对管理口与数据库端口进行来源限制与速率限制。

二 PHP运行时与FPM关键配置

  • 精简功能与扩展:仅启用业务必需扩展,禁用危险或不使用的模块,降低攻击面。
  • 禁用高危函数:在 php.ini 中设置例如 disable_functions = exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec
  • 限制远程包含与文件操作:设置 allow_url_fopen = Off allow_url_include = Off
  • 生产环境错误与日志: display_errors = Off log_errors = On error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
  • 性能与安全并重:启用 OPcache(如 memory_consumption=128、interned_strings_buffer=8、max_accelerated_files=4000),避免泄露源码路径与调试信息。

三 Web服务器与进程隔离

  • Nginx示例(仅处理合法PHP请求,避免解析非预期文件):
    • 仅允许.php通过FastCGI,并显式设置 SCRIPT_FILENAME,防止路径遍历
    • 强制HTTPS,证书路径正确配置
    • 关闭目录列表与不必要的HTTP方法
  • PHP-FPM池安全(/etc/php/7.x/fpm/pool.d/www.conf):
    • listen.owner / listen.group = www-data
    • listen.mode = 0660
    • 分离运行用户与组,避免与Web服务器混用
  • Apache可选:使用mod_security等WAF模块进行请求过滤与规则拦截。

四 代码与数据处理安全

  • 输入验证与输出编码:对所有用户输入进行白名单校验与过滤;输出到HTML时使用htmlspecialchars($s, ENT_QUOTES, ‘UTF-8’);启用CSP降低XSS绕过风险。
  • 数据库安全:使用预处理语句/参数化查询(PDO/MySQLi)杜绝SQL注入;数据库连接启用SSL/TLS加密。
  • 文件上传:严格校验类型/大小/文件名,重命名避免覆盖;上传目录不可执行,通过Web不可直接访问;必要时隔离到独立不可解析路径。
  • 命令执行:尽量避免 eval/exec/system 等;如确需调用系统命令,使用白名单escapeshellarg/escapeshellcmd进行严格转义与隔离。

五 运维监控与备份恢复

  • 日志与监控:集中记录PHP-FPM、Nginx/Apache、系统日志,设置告警规则关注异常请求、上传与命令执行失败等;定期审计配置与代码。
  • 备份与演练:定期备份代码、配置、数据库并异地/离线保存,定期验证恢复流程与可用性。
  • 加固扩展:按需部署WAF/IDS/IPS与主机加固基线,持续进行漏洞扫描与渗透测试。

0