2013-10-27 104 views
-1

我正在想辦法保護PHP應用程序。我想在數據庫服務器端(MySQL)設置一個用戶權限有限的用戶,並在PHP應用程序中爲所有數據庫請求配置此用戶。防止直接訪問數據庫

現在的問題是,有人可以訪問源文件(例如員工)可以使用配置的憑據直接連接到數據庫(例如通過phpmyadmin)。數據庫只能通過PHP應用程序更新。

我想建立一個機制(觸發器或任何可能的在MySQL端或PHP端或兩者),檢查從哪個客戶端請求數據庫來自,從而忽略它。有可能這樣做嗎?有其他方法可以考慮這個問題嗎?

問候

+0

如果您確保有問題的用戶沒有,他們將無法在網站本身上使用任何特權,什麼是如果有人獲取登錄信息的問題? – Evan

+0

您可以禁止訪問(例如)SomeUser @ localhost,從而防止從服務器外部訪問。但是,如果某人有合法的訪問服務器上的PHPMyAdmin的權限,那麼MySQL無法分辨出作爲SomeUser @ localhost的訪問是否合法。 – 2013-10-27 13:57:18

+0

@Evan該應用程序有一個配置文件,憑證連接數據庫的CRUD(登錄名,密碼)。有人可以讀取此文件並使用信息繞過應用程序並訪問數據庫。我想在這種情況下否認任何修改。 – atoo

回答

2

現在的問題是,有人可以訪問源文件(例如員工)可以使用配置的憑據直接連接到數據庫(例如通過phpmyadmin)。

這不是你可以完全防止的事情。如果有人能夠訪問源文件,無論如何你都會被搞砸。

什麼通常是爲了創造一些保護

+2

+1唯一需要注意的是:可能會發生這樣的情況:員工可以訪問源代碼(比如說)Git存儲庫,但密碼仍然是特定於環境的,它存儲在僅存在於服務器中的配置文件中。在這種情況下,員工必須有權訪問實時服務器,而不僅僅是來源 – leonbloy

1

如果您需要設置從一些用戶可以登錄您可以指定域,當您授予用戶權限的:

GRANT ALL PRIVILEGES ON yourdatabase * TO「用戶名」 @」 'goodsecret'識別; 192.168.10.12'

這會限制連接到192.168.10.12,即使密碼是從另一個位置提供的,也不適合這個授權命令。