我正在想辦法保護PHP應用程序。我想在數據庫服務器端(MySQL)設置一個用戶權限有限的用戶,並在PHP應用程序中爲所有數據庫請求配置此用戶。防止直接訪問數據庫
現在的問題是,有人可以訪問源文件(例如員工)可以使用配置的憑據直接連接到數據庫(例如通過phpmyadmin)。數據庫只能通過PHP應用程序更新。
我想建立一個機制(觸發器或任何可能的在MySQL端或PHP端或兩者),檢查從哪個客戶端請求數據庫來自,從而忽略它。有可能這樣做嗎?有其他方法可以考慮這個問題嗎?
問候
我正在想辦法保護PHP應用程序。我想在數據庫服務器端(MySQL)設置一個用戶權限有限的用戶,並在PHP應用程序中爲所有數據庫請求配置此用戶。防止直接訪問數據庫
現在的問題是,有人可以訪問源文件(例如員工)可以使用配置的憑據直接連接到數據庫(例如通過phpmyadmin)。數據庫只能通過PHP應用程序更新。
我想建立一個機制(觸發器或任何可能的在MySQL端或PHP端或兩者),檢查從哪個客戶端請求數據庫來自,從而忽略它。有可能這樣做嗎?有其他方法可以考慮這個問題嗎?
問候
現在的問題是,有人可以訪問源文件(例如員工)可以使用配置的憑據直接連接到數據庫(例如通過phpmyadmin)。
這不是你可以完全防止的事情。如果有人能夠訪問源文件,無論如何你都會被搞砸。
什麼通常是爲了創造一些保護
到的方式,它不是從服務器外部訪問配置MySQL。見Restricting MySQL connections from localhost to improve security,它應該在防火牆級別上進行,以及(談話授予sysadmin)
的網絡應用已使用在訪問任何表限量和功能應用需要的功能的數據庫用戶帳戶。
+1唯一需要注意的是:可能會發生這樣的情況:員工可以訪問源代碼(比如說)Git存儲庫,但密碼仍然是特定於環境的,它存儲在僅存在於服務器中的配置文件中。在這種情況下,員工必須有權訪問實時服務器,而不僅僅是來源 – leonbloy
如果您需要設置從一些用戶可以登錄您可以指定域,當您授予用戶權限的:
GRANT ALL PRIVILEGES ON yourdatabase * TO「用戶名」 @」 'goodsecret'識別; 192.168.10.12'
這會限制連接到192.168.10.12,即使密碼是從另一個位置提供的,也不適合這個授權命令。
如果您確保有問題的用戶沒有,他們將無法在網站本身上使用任何特權,什麼是如果有人獲取登錄信息的問題? – Evan
您可以禁止訪問(例如)SomeUser @ localhost,從而防止從服務器外部訪問。但是,如果某人有合法的訪問服務器上的PHPMyAdmin的權限,那麼MySQL無法分辨出作爲SomeUser @ localhost的訪問是否合法。 – 2013-10-27 13:57:18
@Evan該應用程序有一個配置文件,憑證連接數據庫的CRUD(登錄名,密碼)。有人可以讀取此文件並使用信息繞過應用程序並訪問數據庫。我想在這種情況下否認任何修改。 – atoo