mysql安全問題 匿名使用者 的一點心得

2021-03-31 08:56:30 字數 1391 閱讀 2355

我們知道,在安裝完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/n的,就是這個匿名使用者本地、遠端許可權設定了)

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

改進建議:

1。在安裝完成mysql 後,不僅改變root使用者的的密碼,也同時改變匿名使用者的密碼,方法類似改變root的密碼的方式:

mysql> update user set password=password(yournewpassword) where user=/;

mysql>flush privileges;

2。如非必要,刪除這個匿名使用者,這樣所有人要使用mysql 都必須提供使用者名稱,即便日後出了問題,也容易查詢問題的源頭。

3。除了root使用者外,其他使用者包括匿名使用者(如果沒有刪除這個使用者)不應該擁有grant許可權,防止管理許可權不受控制的擴散出去。

4。賦予使用者update/delete/alert/create/drop許可權的時候,應該限定到特定的資料庫,尤其要避免普通客戶擁有對mysql資料庫做操作的許可權,否則你的系統設定很可能被替換掉。

5。檢查mysql.user表,取消不必要使用者的shutdown_priv,reload_priv,process_priv和file_priv許可權,這些許可權可能洩漏更多的伺服器資訊包括非mysql的其它資訊出去。

6。如果不打算讓你的使用者使用mysql資料庫,在提供諸如php這樣的指令碼語言的時候,重新設定或編譯你的php,取消它們對mysql的預設支援。

來自:非常linux 

使用者登入驗證安全問題

關於登入驗證安全問題,使用者名稱和密碼使用 1 1 or 1 1 典型的sql sql select from 表where user user and pass pass 為避免 sql select from 表where user 1 1 or 1 1 and pass 1 1 or 1 1 ...

2004 10 26 使用者輸入的安全問題

最近在看一本叫 asp.net安全性高階程式設計 把一些感興趣的東西寫成筆記當到這裡吧,今天這一篇主要是講怎麼防禦注入攻擊的。script injection 1.驗證內容 a.使用regularexpressionvalidator的正規表示式來限制使用者輸入 2.篩選使用者輸入 a.使用stri...

使用者登入時的安全問題剖析

post是提交資料的方式,比較常見的post提交資料的方式有四種 2 multipart form data 瀏覽器支援 向伺服器上傳小檔案,一般不超過2m 4 text xml 瀏覽器不支援 向後台伺服器提交結構化資料 本文主要介紹第一種提交資料的方式 如何用post進行使用者資料安全提交,保護使...