phpMyAdmin书签功能本身不执行SQL,仅明文存储查询语句于pma__bookmark表;风险源于攻击者写入恶意语句后被其他用户点击执行,需禁用前端入口、清空/删表并回收对应权限。
phpMyAdmin 书签功能本身不执行 SQL,但会持久化存储用户提交的查询
书签(bookmarks)只是把用户在 sql 标签页里写过的查询语句,以明文形式存进 pma__bookmark 表(默认在 phpmyadmin 数据库中)。它不自动执行、不解析语法、也不触发任何后端逻辑——所以不存在“sql 存储攻击”这种说法。真正风险在于:攻击者若已获得数据库写权限,可往该表注入恶意 sql 字符串;后续其他用户点击该书签时,会在自己的会话里执行那段语句。
禁用书签需同时关闭前端入口与后端存储表
只删菜单或隐藏按钮没用,后端接口仍可被直接调用。必须做两件事:
- 在
config.inc.php中设$cfg['Bookmark']['default'] = false;(部分版本需配合$cfg['Bookmark']['show'] = false;) - 删除或清空
pma__bookmark表:登录 MySQL 执行DROP TABLE IF EXISTS `phpmyadmin`.`pma__bookmark`;,或至少TRUNCATE TABLE `phpmyadmin`.`pma__bookmark`; - 确认账号无对该表的 INSERT/UPDATE 权限:
REVOKE INSERT, UPDATE ON `phpmyadmin`.`pma__bookmark` FROM 'user'@'%';
书签不是高危功能,但暴露了权限管理漏洞
书签功能被滥用,本质是数据库账号权限过大。如果普通用户能往 phpmyadmin 库写数据,说明它已被授予 CREATE 或 INSERT 权限——这比书签本身危险得多。应优先检查并回收:
-
SHOW GRANTS FOR 'user'@'%';输出中是否含GRANT ... ON `phpmyadmin`.* - 是否误授了
phpmyadmin库的全部权限(尤其是CREATE、INSERT、UPDATE) - 是否未启用
$cfg['Servers'][$i]['DisableIS'] = true;,导致用户能探测到phpmyadmin库存在
书签功能关闭后,用户仍可通过 SQL 标签页手动输入查询——真正的防线永远在 MySQL 权限层,而不是 phpMyAdmin 的某个开关。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











