彻底禁用phpmyadmin书签功能需三步:删除pma__bookmark表、清空config.inc.php中bookmarktable配置、收回元数据库写权限;仅禁用界面选项无效,因攻击者可绕过ui直接post执行书签sql。

关不掉书签功能本身,但能彻底让它失效——关键是删表、清配置、断执行链。
为什么“禁用书签”选项根本没用
phpMyAdmin 的 $cfg['Bookmark']['enable'] = false 只控制界面上是否显示「书签」标签页,不影响底层逻辑。只要 pma__bookmark 表存在且可读,攻击者仍可通过直接 POST 请求(比如用 curl 模拟)提交 bookmark_id 参数触发查询。界面开关和 SQL 执行权限是两回事。
- 真实攻击路径:构造
POST /phpmyadmin/import.php或POST /phpmyadmin/sql.php,带上bookmark_id=123和合法 session,就能绕过 UI 直接执行书签 SQL - 书签内容本身可能含恶意语句(如
SELECT ... UNION SELECT @@version,load_file('/etc/passwd'),...),一旦被复用就是注入入口 - 即使你删了
$cfg['blowfish_secret']或改了目录名,只要表还在、权限开着,这条链就通着
真正有效的三步清理法
必须同时做以下三件事,缺一不可:
- 在 MySQL 中删掉书签表:
DROP TABLE IF EXISTS `pma__bookmark`;(注意:不是禁用,是物理删除) - 确认
config.inc.php中没有残留的书签相关配置,尤其是:$cfg['Servers'][$i]['bookmarktable']必须注释或设为空字符串,否则 phpMyAdmin 启动时会尝试重建该表 - 检查数据库用户权限,确保其对
phpmyadmin元数据库(通常是phpmyadmin库)没有CREATE或INSERT权限——否则下次登录可能自动重建表
验证是否真关掉了
别只看菜单有没有「书签」二字。做两件事确认:
- 登录后访问
/phpmyadmin/bookmark.php,应返回 404 或 “未定义书签表” 类错误,而不是空白页或列表 - 抓包测试:用
curl -X POST -b "pmaCookie=..." -d "bookmark_id=1" http://your.pma/sql.php,响应里不应出现任何 SQL 执行结果,而应报错Bookmark not found或直接 500(因表不存在)
最容易被忽略的是:很多团队只删了表,却忘了回收元数据库写权限,导致某次 phpMyAdmin 升级或重装后,pma__bookmark 表又被悄悄重建——攻击面就回来了。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











