本地phpmyadmin受dns rebinding攻击影响,因其默认不校验http host头,攻击者可通过恶意域名解析(如attacker.com→127.0.0.1)绕过同源策略,伪装成本地服务访问数据库管理界面;需在config.inc.php中强制指定$cfg['servers'][$i]['host']='127.0.0.1'并设$cfg['allowarbitraryserver']=false,同时在nginx/apache层校验host头仅允许localhost或127.0.0.1,二者缺一不可。
为什么本地 phpmyadmin 会受 dns rebinding 攻击影响
因为 phpMyAdmin 默认不校验 HTTP Host 头,攻击者可通过恶意域名解析(比如把 attacker.com 解析到 127.0.0.1)诱使浏览器发起请求,绕过同源策略,让远端服务器“假装”是本地服务,从而读取或操作你的数据库管理界面。
这不是 phpMyAdmin 的 bug,而是它被设计为 Web 应用——只要能访问到它的 HTTP 接口,就默认信任 Host 头。本地开发时习惯用 http://localhost/phpmyadmin 或 http://127.0.0.1/phpmyadmin,但一旦你开了端口、关了防火墙、或用了代理,攻击面就暴露了。
必须设置 $cfg['Servers'][$i]['host'] 并禁用 Host 头动态解析
phpMyAdmin 从 4.9.0 起支持 Host 白名单机制,但默认不启用。关键动作是显式锁定后端 MySQL 连接目标,并关闭对 $_SERVER['HTTP_HOST'] 的依赖。
- 编辑
config.inc.php,找到对应 server 配置段,在$cfg['Servers'][$i]中强制指定:$cfg['Servers'][$i]['host'] = '127.0.0.1';
- 添加:
$cfg['Servers'][$i]['host'] = '127.0.0.1';<br>$cfg['Servers'][$i]['port'] = '3306';<br>$cfg['Servers'][$i]['auth_type'] = 'cookie';<br>// 禁用基于 Host 头的自动识别<br>$cfg['AllowArbitraryServer'] = false;
- 删掉或注释掉任何类似
$cfg['Servers'][$i]['host'] = $_SERVER['HTTP_HOST'];的动态赋值——这在某些旧教程里常见,极其危险
Web 服务器层加 Host 头校验(Nginx / Apache)
phpMyAdmin 自身不拦截非法 Host,得靠前置 Web 服务器兜底。否则攻击者直接发 Host: evil.com 请求仍能抵达 PHP 脚本。
- Nginx:在 server 块中加
if ($host !~ ^(localhost|127\.0\.0\.1)$) { return 444; },或更稳妥地只允许明确的 server_name:server_name localhost 127.0.0.1;
- Apache:用
RewriteCond %{HTTP_HOST} !^(localhost|127\.0\.0\.1)$ [NC]+RewriteRule ^ - [F] - 别信
Allow from 127.0.0.1——这是针对客户端 IP 的,而 DNS rebinding 的请求 IP 就是127.0.0.1,完全绕过
开发环境不该暴露到公网或局域网可访问
很多人以为“我在家里的路由器后面就安全”,但现代攻击链常利用内网横向移动,或者通过鱼叉邮件诱导点击恶意链接,触发浏览器向 http://router.local/phpmyadmin 发请求(如果该域名真被解析到本地)。
- 确认 phpMyAdmin 目录不在 Web 根目录下被意外暴露;路径应为
/var/www/html/phpmyadmin/这类可控位置,而非/var/www/html/下任意可猜路径 - 禁用 Apache 的
mod_userdir、Nginx 的autoindex,防止目录遍历或误配导致配置文件泄露(如config.inc.php) - 如果只是本地调试,用 PHP 内置服务器启动(
php -S 127.0.0.1:8000 router.php)并绑定到127.0.0.1,比跑完整 LAMP 更轻量也更隔离
真正麻烦的不是配几行代码,而是 Host 头校验和网络层绑定要同时生效——漏掉任意一环,攻击者都能用一个伪造 DNS 记录打穿整个防护逻辑。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











