Mysql安全問題(匿名使用者)的一點心得(轉)

BSDLite發表於2007-08-16
Mysql安全問題(匿名使用者)的一點心得(轉)[@more@]  前兩天在幫朋友整理他的主頁空間時候,發現的一點關於MySQL可能大家都會忽略的問題:我們知道,在安裝完MySQL後,它會自動建立一個root使用者和一個匿名使用者,其初始密碼都是空,對於前者,很多參考資料上都會提醒大家要注意及時設定一個密碼,而忽略了後者,大概是因為後者預設設定為只能在本機使用的緣故吧。

  但如果你的MySQL是要提供給Web伺服器作資料庫服務的,忽略這個匿名使用者的代價可能相當慘重,因為在預設設定下,這個匿名使用者在localhost上幾乎擁有和root一樣的許可權,這時候,如果你的客戶擁有上傳指令碼檔案、指令碼檔案可以進行MySQL資料庫操作(比如允許操作MySQL的php)的許可權已經可能將你的MySQL改動得面目全非了:

  我今天幫朋友整理他的主頁空間的時候,試著寫了一個很簡單的執行sql語句的php檔案上傳上去,其中連線字中的user,password我都試著置空,host=localhost,結果發現我的sql語句可以執行,於是執行select * from MySQL.user察看使用者許可權,發現這個使用者在localhost許可權非常高,連grant_priv都有,(察看的時候,會發現在root使用者下有兩行使用者名稱、密碼為空的,但各項許可權有y 的,就是這個匿名使用者本地、遠端許可權設定了)

  所以我試著用這個php頁面建立一個新使用者,並grant給他較高的許可權,結果一舉成功,這樣我就可以用這個新使用者透過我本機的MySQL client連線到這個網站的MySQL server,並用這個新建立的使用者的管理許可權對這個網站的MySQL server進行管理,看到自己可以進行這樣輕易獲得深入的資料庫操作,我怎麼還敢把朋友的主頁空間的敏感資料放入這個MySQL server呢?

  改進建議:

  1、在安裝完成MySQL 後,不僅改變root使用者的的密碼,也同時改變匿名使用者的密碼,方法類似改變root的密碼的方式:
CODE:
MySQL> UPDATE user set password=PASSWORD('yournewpassword') where user='';
MySQL>FLUSH PRIVILEGES;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-961627/,如需轉載,請註明出處,否則將追究法律責任。

Mysql安全問題(匿名使用者)的一點心得(轉)
請登入後發表評論 登入
全部評論

相關文章