2014-09-11 54 views
0

我製作了一個頁面,用戶可以在textarea中插入一個查詢,當他們點擊提交按鈕時,它會生成一個填充了該查詢數據的表格。不允許用戶從查詢中編輯數據庫

現在我想確保用戶不能使用其他類型的查詢,例如:INSERT,DROP,ALTER,UPDATE,RENAME和其他所有可以編輯數據庫中表的數據。

我找不到任何好的例子。 (或沒有正確搜索)

這樣做的最佳方法是什麼?

+0

你有沒有考慮搜索單詞「insert」/「drop」/「alter」等,如果找到了,那麼只是給出一個錯誤信息? – 2014-09-11 11:46:31

+2

您可以爲新的MySQL用戶設置所需的權限並使用該用戶連接到數據庫。無法繞過,因此它非常安全。 – 2014-09-11 11:47:21

+0

你可以創建一個帶有選項的表單,當表單被提交時,它會創建查詢並執行它。別再擔心了。 – machineaddict 2014-09-11 11:52:39

回答

0

如果使用MySQL並限制DML的dbuser,則可以使用GRANT。我不知道確切的語法。或者您也可以通過regexstripos

2

爲此創建一個新用戶來驗證查詢。該用戶應該只有SELECT訪問數據庫。

GRANT SELECT ON database_name.* TO 'someuser'@'somehost'; 

利用這種方法,你不必用正則表達式的混亂(除非你想客戶端驗證),這樣即使您的驗證失敗,數據庫本身會妥善處理的權限。

您的表單需要使用someuser來連接並運行查詢,而不是應用程序其餘部分使用的用戶。