2009-11-02 20 views
0

我正在做一個個人數字處理項目,我想在多臺計算機上啓動多個程序(甚至有可能在亞馬遜的服務器上運行),並將它們全部存儲和共享數據在位於我的網站託管帳戶的通用SQL數據庫中。如何以安全的方式從客戶端查詢MySQL數據庫

託管公司將不允許直接連接到SQL服務器的外部連接,但我正在考慮編寫一個瘦PHP腳本,該腳本駐留在服務器上,並使用HTML POST命令從遠程程序接收SQL命令,並通過返回結果爲html。然後,我可以使用HTTP庫將SQL命令直接傳遞到遠程服務器並獲取結果。

很顯然,將裸SQL命令發送到服務器是一個安全問題。我正在考慮使用某種共享密鑰加密來發送post命令,並且結果會很好地返回未加密的狀態。

所以,我的問題是,我沒有想到什麼?我不是網絡安全方面的專家,我顯然缺少一些東西。這裏有一些重大的安全漏洞無法填補嗎?還是有其他方法或庫來做到這一點,我還沒有找到?

回答

1

將SQL作爲存儲過程存儲在數據庫中並從腳本調用這些SP可能會更好。這樣你就不必發送任何普通的SQL(只是參數),並且維護起來會更容易。

您的意思是客戶?作爲Web應用程序(JavaScript)的客戶端,您可以通過創建Ajax調用並將數據作爲Json返回來執行它。 如果你的意思是一個Windows客戶端,創建一個WebService而不僅僅是一個PHP頁面並在你的應用程序中使用它更有趣。

至於加密,我認爲通過SSL或多或少是確保完全安全的最佳/唯一的方法。

0

如果您的託管公司允許使用SSH客戶端通過SSH會話連接到MySQL服務器。

如前面的答案所示,爲了減少爲每個查詢發送的內容量,請爲這些查詢創建存儲過程,並僅使用適當的參數調用它們。