2011-03-29 72 views
1

我有100個左右用戶的信息數據庫。我有2個擁有數據庫權限的MySQL用戶。根目錄以及特定的數據庫用戶「目錄」。用戶「目錄」只有權限運行SELECT語句,沒有別的。只允許用戶從數據庫中獲得某些信息

一些信息是該用戶的敏感,我使用PHP作爲代理,以檢測它們是用戶的任何SQL命令運行之前,我怎麼能追加的SELECT語句都包括WHERE id = '$their_id'其中$their_id是一個PHP變量與他們的身份證。

請注意,用戶將能夠編寫他們的PHP MySQL命令,我在db.php中定義了這些限制,其中將包含連接信息。

我想阻止用戶joe能夠運行類似SELECT * WHERE id = 'bob'的命令,當joe不是bob時。


編輯:

我目前不掃描,通過任何MySQL的命令的,我只是簡單地創建db.php中爲他們的連接。無論如何,我可以製作自己的代理MySQL命令並強制他們使用它們,這樣他們必須使用我的命令mysql_query而不是默認的mysql_query來覆蓋我所做的任何處理。

回答

1

而不是修改他們的查詢只是總是讓他們通過視圖引用數據。他們根本沒有權利去創建視圖的真實表格。您創建該視圖與

Create View tablenametheyuse as select * from realtable with id = 'user' 

並且只給予該用戶權限,以他的觀點。

他們現在可以通過視圖以任何他們想要的方式編寫他們的select語句。

0

這似乎不是很安全,但我只是檢查每個條目,看看是否在它的單詞'id'。然後檢查它是否等於它,如果它不是它們的用戶標識,則不執行該命令。

+0

看起來很容易,但看到更新的答案如何強制他們使用的功能,將處理這個 – ParoX 2011-03-29 21:25:05

+0

看起來他們只是輸入MYSQL查詢。所以你可以創建你自己的函數process_queries(query),然後當你完成編輯它時,你可以使用mysql_query(query) – zamN 2011-03-29 21:36:04