2013-01-12 94 views
3

我是.net世界的新手,請耐心等待。我需要在控制器(帶有剃鬚刀引擎的MVC4應用程序)視圖中顯示用戶列表。MVC 4在前端隱藏客戶端ID的最佳實踐

當用戶顯示在視圖中時,客戶端可以單擊鏈接並在單獨的視圖中獲取特定的用戶信息。我想實現這個,但想隱藏用戶的任何特定的客戶端ID。客戶端ID將用於服務器端檢索客戶端信息。

我可以通過幾種方式做到這一點,例如:在鏈接中,我可以放一個數據標識,然後在服務器端使用此標識從數據庫中檢索更多信息。我擔心的是,客戶端可以簡單地從HTML源代碼中查看這些id,並使用此id信息查看類型控制器url。我也不喜歡隱藏的領域。

所以我的問題是什麼是其他不同的方式或最佳實踐來實現這樣的功能?

+0

謝謝大家的回答。他們以某種方式幫助了他們。 –

回答

3

以您描述的方式使用密鑰對於在應用程序中導航相當常見。

如果您擔心安全問題(某人能夠將發現或猜測的密鑰傳遞給控制器​​上的某個操作並查看他們不應該看到的某些信息),那麼在從控制器/操作級別返回信息之前驗證用戶上下文如果您認爲不適當,則決定不返回安全信息。

我可以想象的唯一另一種方式允許用戶界面以必要的上下文信息迴應您的服務器端可能會爲每個發送到客戶端的關鍵數據生成代理guid字段,使用該代理髮送回您的服務器端,將guid轉換回真正的密鑰,然後開展您的業務。 (GUID本身不像猜測那麼合理)然而,我絕不會做這樣的事情......

想想你正在試圖解決的問題,並確保它保證這種複雜性。

+0

我同意檢查用戶上下文的方法。感謝您的回答。 –

0

與上述所有內容一致 - 如果您提供用戶界面以查看基於ID的詳細信息,則無法隱藏該ID - 必須將其重新發回。它可能不是實際的ID(即一個GUID),但這是不相關的。您提供的是客戶端的ID,任何人都可以使用該ID來檢索基於ID的詳細信息。

問自己問題:「我想提供一個電話簿,但不顯示電話號碼,我可以這樣做嗎?」

+0

的確如此,但通常會有人擔心新ID可以被輕易猜出。使用GUID而不是整數不能解決控制對對象的授權訪問的問題,但它確實使得難以猜測未看見的對象的ID。 – Richard

相關問題