我目前正在使用ASP .Net MVC3構建電子商務網站。在結帳過程結束時,我有一個視圖,顯示訂單摘要,包括客戶的聯繫信息(姓名,電子郵件,地址,聯繫方式等)。公開用戶信息時的安全性
我在查詢字符串中使用GUID,用於從數據庫中檢索信息並將其顯示在頁面上(例如www.site.com/Checkout/Complete?ID={GUID)。這在安全性方面被認爲是不好的做法?有人需要猜測GUID才能訪問任何客戶信息,這看起來幾乎是不可能的。在顯示信息之前,我是否應該努力認證用戶?
非常感謝
我目前正在使用ASP .Net MVC3構建電子商務網站。在結帳過程結束時,我有一個視圖,顯示訂單摘要,包括客戶的聯繫信息(姓名,電子郵件,地址,聯繫方式等)。公開用戶信息時的安全性
我在查詢字符串中使用GUID,用於從數據庫中檢索信息並將其顯示在頁面上(例如www.site.com/Checkout/Complete?ID={GUID)。這在安全性方面被認爲是不好的做法?有人需要猜測GUID才能訪問任何客戶信息,這看起來幾乎是不可能的。在顯示信息之前,我是否應該努力認證用戶?
非常感謝
用戶應進行身份驗證,您的代碼應檢查當前登錄的用戶是否有權訪問該信息。
GUID本身是非常難以猜測或蠻力。 125個可能的GUID有2個(不是2^128,因爲有些位有fixed meaning)。
較大的問題將得到
如果目的是允許某人回到他們先前放置的訂單,我會允許GUID預先填充用戶名以方便使用,但仍需要密碼。
如果在瀏覽會話期間發生這種情況,並且出於某種原因,您需要一個GUID(不能將該信息存儲在用戶的會話中?),我傾向於爲此創建一次性GUID,而比暴露用戶的唯一ID。將一次性GUID映射到服務器代碼中用戶的實際唯一ID(可以是實際GUID的鹽味散列,或可映射到映射表中)。
謝謝埃裏克。一些有用的信息,非常感謝。 – Tas 2012-03-09 01:54:09