提高MySQL數據庫的安全性(四)

從網絡角度談談如何提高mysql數據庫的安全性

當連接MySQL數據庫到網絡的時候,一些特殊的安全問題就出現了。

建立一個專門用于網絡連接的用戶并不是一個壞主意。這樣可以授予他們必要的、最少的權限,從而不給用戶授予以下一些權限,例如DROP、ALTER或CREATE權限。我們可能只在類型表中授予SELECT權限,而只在訂單表中授予INSERT權限。此外,這還是如何應用最少權限原則的例證。

提示:在之前的內容中我們說了PHP的addslashes()函數和stripslashes()函數以去掉任何可能產生問題的字符。記住這樣做和在將任何數據發送到MySQL數據庫之前要執行一個常規的數據清理都是非常重要的。你可能記得,我們曾經使用了doubleval()函數來檢查數字類型的數據是否真正是數字類型的數據。我們經常容易犯的一個錯誤就是會忘記它——人們往往記得使用addslashes()但是忘記檢查數字類型數據。

應該經常檢查來自用戶的所有數據。即使HTML表單中由選項框和按鈕組成,一些人還是可能通過企圖修改URL以進入腳本。此外,還應該檢查用戶數據的大小。

如果用戶輸入的密碼或機密數據需要保存在數據庫中,請注意,如果不是SSL(Secure Sockets Layer,加密套接字層),這些數據將以純文本的方式從瀏覽器傳遞到服務器。關于SSL的用法,在以后將會說到。


刪除風險組件

MySQL數據庫的默認配置有一些不必要的組件,你可以考慮以下建議:

1. 禁用LOAD DATA LOCAL INFILE指令

這個命令允許用戶讀取本地文件甚至訪問其他操作系統上的文件,這可能幫助攻擊者收集重要的信息并利用應用程序的漏洞侵入你的數據庫。你需要做的是把set-variable=local-infile=0插入到MySQL數據庫的my.cnf文件中,來禁用這個指令。?

2. 刪除測試數據庫

有一個默認的“測試”數據庫用于測試目的。由于這個數據庫有安全風險,匿名用戶也可以訪問,你應該使用mysql> DROP database test;指令盡快把它清除掉。

3. 刪除歷史文件

MySQL服務器有一個歷史文件,它可以幫助你在安裝出錯的時候找到問題所在。歷史文件包含敏感信息,比如說密碼,如果這些信息被攻擊者獲得,那么將會給你的數據庫帶來巨大的安全隱患。在安裝成功后,歷史文件并沒有什么用,因此你可以使用cat /dev/null > ~/.mysql_history指令來刪除文件當中的內容。

【相關推薦】

提高MySQL數據庫的安全性(一)

提高MySQL數據庫的安全性(二)

提高MySQL數據庫的安全性(三)

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享