Linux中PHP安全设置怎么做
导读:Linux下PHP安全设置清单 一 基础与运行环境加固 保持系统与PHP为最新稳定版,及时修补漏洞;在 Ubuntu/Debian 可使用包管理器更新,并重启相关服务使配置生效。 仅启用必要的 PHP 扩展,移除未使用的模块(如 ftp、...
Linux下PHP安全设置清单
一 基础与运行环境加固
- 保持系统与PHP为最新稳定版,及时修补漏洞;在 Ubuntu/Debian 可使用包管理器更新,并重启相关服务使配置生效。
- 仅启用必要的 PHP 扩展,移除未使用的模块(如 ftp、exif 等),减少攻击面。
- 启用 OPcache 提升性能并减少暴露面(生产环境建议开启,注意配合安全配置)。
- 配置 HTTPS(如使用 Let’s Encrypt 的 certbot),并在 Web 服务器中强制跳转至 HTTPS。
- 配置防火墙(如 UFW)仅开放必要端口(如 80/443),降低暴露风险。
二 php.ini 关键安全参数
- 错误与信息泄露防护
- 生产环境建议:display_errors = Off、log_errors = On、设置 error_log 为专用日志文件(如 /var/log/php_errors.log),避免将路径与堆栈暴露给终端用户。
- 危险函数禁用
- 建议禁用:exec、shell_exec、system、passthru、proc_open、proc_get_status、popen、eval、assert、pcntl_exec、dl、symlink、readlink、stream_socket_server、fsockopen、get_cfg_var、ini_alter、ini_restore、openlog、syslog、popepassthru 等;可按业务最小权限再做裁剪。
- 远程文件包含与协议限制
- allow_url_fopen = Off、allow_url_include = Off,阻断通过 http/ftp 等协议包含远程恶意脚本。
- 全局变量与请求数据
- register_globals = Off(历史选项,现代版本默认关闭);magic_quotes_gpc 已在 PHP 5.4 移除,无需设置。
- 文件上传与临时目录
- 限制大小:upload_max_filesize = 2M、post_max_size = 8M(按业务调整);明确 upload_tmp_dir 为受控目录,并确保运行用户对该目录仅有必要权限。
- 会话安全
- session.cookie_httponly = 1、session.cookie_secure = 1、session.cookie_samesite = Strict/Lax、合理设置 session.gc_maxlifetime,降低会话劫持与 XSS 风险。
- 其他常用加固
- expose_php = Off(隐藏 X-Powered-By: PHP 标识);enable_dl = Off(禁止运行时加载扩展);max_execution_time / max_input_time 设为合理值,防止滥用。
三 Web服务器与运行隔离
- PHP-FPM 与权限
- 使用专用系统用户(如 www-data)运行 PHP-FPM;网站根目录与上传目录权限最小化(如 chown www-data:www-data /var/www/html; chmod 755 /var/www/html)。
- 禁用上传等目录的 PHP 解析
- Nginx 示例:
- 禁止解析:location ~ ^/(attachments|data)/.*.(php|php5)$ { deny all; }
- 正常处理:location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.x-fpm.sock; }
- Apache 示例:
- 关闭目录列表与解析:< Files ~ “.php$”> Order allow,deny; Deny from all (针对图片/附件等目录)。
- Nginx 示例:
- 路径与访问限制
- 使用 open_basedir 将脚本可访问路径限制在网站根目录与必要临时目录(如 open_basedir = /var/www/html/:/tmp/);注意其为“前缀匹配”,如需严格限定目录,请以斜杠结尾(如 /var/www/html/)。
- 运行模式说明
- safe_mode 已在 PHP 5.4 移除,勿依赖,改用上述替代措施。
四 数据库与会话安全
- 数据库连接与权限
- 仅允许数据库账户从 localhost 连接;使用强密码;遵循最小权限原则(如仅授予目标库/表的必要权限)。
- 防注入
- 使用 预处理语句/参数化查询(如 MySQLi 或 PDO),杜绝 SQL 注入。
- 本地文件读取限制
- 如无需本地导入功能,建议关闭:mysqli.allow_local_infile = Off。
- 会话与 Cookie
- 启用 HttpOnly、Secure、SameSite 等 Cookie 属性,设置合理会话生命周期与 GC 时间。
五 运维与监控
- 配置生效与验证
- 修改 CLI/FPM/Apache 对应的 php.ini 后,重启服务(如 systemctl restart php7.x-fpm 或 systemctl restart apache2);使用 phpinfo() 或 php -i | grep 配置项 验证。
- 日志与入侵排查
- 集中收集并监控 PHP 错误日志 与 Web 访问日志;定期排查可疑代码模式(如 eval($_POST、file_put_contents 写入可执行文件等)。
- 主机与强制访问控制
- 启用 SELinux 或 AppArmor 对 PHP-FPM 进程进行域隔离与权限约束。
- 备份与演练
- 定期备份网站文件与数据库,并进行恢复演练;保持 PHP 与依赖库 的定期更新与漏洞扫描。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux中PHP安全设置怎么做
本文地址: https://pptw.com/jishu/748550.html
