有幾個jQuery插件(jqgrid,DataTables等)用於在具有高級功能的html表中顯示數據。那些具有實時編輯能力的人可以將mysql行ID存儲在表本身中(並使其不可編輯),或者像源行中的行ID一樣。在源代碼中顯示MySQL行ID:好還是壞?
我也讀過,揭示任何關於你的數據庫設計是一個壞主意。
在源代碼或表本身揭示一個MySQL行ID是一個大問題?它僅取決於數據的敏感性?
在javascript中匹配html錶行id與mysql行id的哈希表是否會更好?
有幾個jQuery插件(jqgrid,DataTables等)用於在具有高級功能的html表中顯示數據。那些具有實時編輯能力的人可以將mysql行ID存儲在表本身中(並使其不可編輯),或者像源行中的行ID一樣。在源代碼中顯示MySQL行ID:好還是壞?
我也讀過,揭示任何關於你的數據庫設計是一個壞主意。
在源代碼或表本身揭示一個MySQL行ID是一個大問題?它僅取決於數據的敏感性?
在javascript中匹配html錶行id與mysql行id的哈希表是否會更好?
如果您要依據數據模型的「obscurity」來保護您免受像SQL Injection這樣的問題,那麼您將非常失望。另外,如果您不是用戶正在提供的理智檢查值(例如rowid進行更新),那麼您的應用程序中會出現漏洞。這與您在應用程序中用於識別數據的內容無關。主鍵本身通常不是敏感數據。
簡而言之,使用行ID通過您的應用程序識別來自您的用戶的數據不是一個問題,只要您有理智地檢查用戶輸入,就像您需要做的一樣。請注意,如果您在網址中顯示ID,則可能會遇到一些問題,因爲用戶傾向於在最奇怪的地方爲書籤添加書籤。這聽起來不像你想要那樣做。
我嘗試和清理所有數據(我使用mysql真正的轉義字符串)。 此外,該ID不會在URL中,它只是一個行的HTML ID。所以書籤問題並非如此。 謝謝。 – dewyze 2012-02-10 05:13:23
正如您所說,它取決於數據的敏感性。不過,我想向你解釋我爲這種情況所做的一切。可能會幫助你。
我添加了數據庫錶行的ID作爲HTML錶行ID。當有人編輯。一旦我收到請求,我檢查了幾件事情。
您也可以將2和3個步驟組合在一起。如果你想要更多的安全性或審計,你也可以保留一個日誌。
如果您需要,您可以對ID進行編碼並將其設置爲行ID。當你得到編輯請求時,你可以解碼並得到。
向用戶公開主鍵通常是非常嚴格的 - 他們可以依賴於它,使得改變(如果/必要時)變得困難。這也是一個安全問題 - SQL注入可能會造成更多的損害。 – 2012-02-10 04:53:32