首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 匿名用戶安全隱患深度剖析:預設權限過高、PHP 腳本可竊取完整控制權

     編輯:MySQL 資料庫相關知識

安裝 MySQL 後自動建立 root 與匿名用戶 (User=''),密碼皆為空。許多教學只提醒改 root 密碼,忽略匿名用戶風險。

實測風險場景

  • Web 伺服器允許上傳 PHP 腳本且可操作 MySQL
  • PHP 連線字串 user='', password='', host='localhost' 成功連線
  • 查詢 SELECT * FROM mysql.user 發現匿名用戶在 localhost 擁有近乎 root 權限 (含 Grant_priv)
  • 利用此權限 CREATE USER + GRANT 建立高權限帳號
  • 本機 MySQL Client 以新帳號連線遠端管理,完全控制資料庫

修正建議 (按優先序)

  1. 修改匿名用戶密碼 (同 root 方式):
    UPDATE user SET Password=PASSWORD('newpass') WHERE User=''; FLUSH PRIVILEGES;
  2. 刪除匿名用戶 (最徹底):
    DELETE FROM mysql.user WHERE User=''; FLUSH PRIVILEGES;
  3. 非必要不給 GRANT 權限,防止權限擴散
  4. 權限限定特定資料庫,嚴禁普通帳號操作 mysql 系統庫
  5. 回收高危權限:Shutdown_priv, Reload_priv, Process_priv, File_priv
  6. 不需 MySQL 時,PHP 重新編譯移除 MySQL 擴展

核心原則

最小權限原則:每個帳號僅賦予完成業務所需最小權限,定期審計 mysql.user 表。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved