2009-12-01 67 views
0

我有從數據庫中獲得的書籍列表。當用戶選擇一本書時,我希望它能夠檢索該書的信息並將其顯示在屏幕上。但是,我想保留隱藏在客戶端的書的ID,那麼傳輸選定書的ID的最佳方式是什麼?我認爲我的大腦已經融化了,所以我可能錯過了一些明顯的東西。會話似乎是唯一沒有傳輸任何身份信息的方式,但我不知道如何實現一個系統,其中選擇了一個項目(從最適合的控制類型中選擇)並且以某種方式拾取項目的ID由服務器和相關信息檢索。 (使用ASP.NET + SQL Server)。 感謝您的任何意見從數據庫中獲取對象的詳細信息 - 保持ID安全

回答

4

您是否真的想隱藏用戶的數據庫ID,例如在用戶對數據庫有一些替代訪問權的情況下,並且您希望他以困難的方式搜索該書?

通常情況下,要求不是要保密ID的祕密,而是爲了防止用戶找出其他物品的ID(例如強制某個導航渠道到達某個物品)或與其他用戶共享該ID 。因此,例如可以有一個URL http://example.com/books/0867316672289,其中0867316672289將向相同的訪問者呈現相同的書,但用戶無法繞過該值,因此0867316672288或0867316672290將着陸404s。它也可以要求另一個用戶進入0867316672289還得到了404

保持ID真正的「祕密」(即,將其存儲在會話,並具有會話狀態跟蹤的「當前書」)幾乎沒有增加超過上述方案的價值,只會使事情複雜化。

一個解決方案是使用站點密鑰對ID進行加密。從一個int ID中,您可以獲得一個16字節的加密塊(例如,如果使用了AES塊大小),可以在隨後的訪問中將其恢復爲原始ID。由於解決方案空間的巨大尺寸(16字節),訪問者無法猜測其他ID。如果您還想讓僞ID粘到用戶上,您可以使用特定的加密密鑰(例如派生自用戶ID)或將額外信息添加到僞ID中(例如,也加密用戶ID並檢查它在你的請求處理程序中)。

+0

會話ID是密鑰的另一個候選人。 – RickNZ 2009-12-01 04:48:53

+0

謝謝,我想我會去加密。這些書不是爲了公開展示,而只適用於寫過它的人或作者邀請的人。因此,另一項檢查是爲了獲得許可而做的,但我試圖將內部工作暴露在最低限度。我喜歡加密的想法,因此可以將加密值存儲在隱藏字段中,所以我可以從用戶選擇書籍時檢索它。ID的值只是整數,所以猜測這不是太棘手, d喜歡通過只接受具有校正加密數據的格式良好的URL來添加額外的保護。 – keyboardP 2009-12-01 15:19:49

-2

我不知道我理解你的問題,因爲答案似乎是太明顯了:只是不發實體的ID給客戶。在服務器端使用它來組成ASP.NET頁面,但不要在發送到客戶端的輸出頁面上包含id本身。

這是否有意義? :-)

+0

@downvoter:如果您downvote,意見是讚賞;它真的有助於瞭解人們的答案有什麼問題。謝謝。 – CesarGon 2009-12-01 01:12:25

+1

哈希是單向映射,不能用作唯一鍵;你也可以執行分析來獲得哈希和書籤之間的對應 – 2009-12-01 01:17:34

+0

好吧,當然。這就是爲什麼我問我的答案是否有意義。客戶端的實體標識要求在這個問題上是非常模糊的。我正在嘗試在這裏創建對話! :-) – CesarGon 2009-12-01 01:20:19

0

如何爲每本書使用「僞ID」?我假設你在客戶端需要一些東西來告訴服務器客戶端選擇了哪本書。

爲每本書生成一個Guid作爲網頁端「僞ID」,這應該保持真實ID相當安全。

+0

Guid's是一個可行的選擇,雖然不如remus的解決方案。事實上的GUID方案(其中微軟是一個實例)是膨脹和討厭產生。再加上它在數據庫中需要一個16字節(主鍵?)鍵條目;它還需要一個數據庫旅程來讓網絡服務器檢索狀態。我建議像Remus建議的可逆加密。 Blowfish是一種很好的(非常高效的)加密算法。 – 2009-12-01 01:14:08

+0

似乎是一個或另一個。往返數據庫(一旦擁有密鑰後可能會發生)或解密。使用.Net創建Guid很簡單,這只是一個建議。您可以輕鬆生成一個隨機的4字節整數並使用它。聽起來像Guids正在進行的一些討厭。 – Moose 2009-12-01 01:55:45

1

Is exposing the IDs a risk?(SO question)

+0

也許http://stackoverflow.com/questions/396164/exposing-database-ids-security-risk?在您的文章鏈接需要谷歌頁面速度 – 2009-12-01 01:11:32

+0

謝謝,修復!在深夜回答的危險:) – orip 2009-12-01 05:27:21

+0

謝謝,那個線程是一個有趣的閱讀。 – keyboardP 2009-12-01 15:22:46

相關問題