2011-05-06 31 views
1

根據的評論的問題在這裏提出:隱藏的字段信息應該始終加密嗎?

storing user detail ... session vs cache !

摘要:我提到我用,我填充一個模型,並使用隱藏字段,以保持和傳回的信息技術; Viewstate便宜。 Simon Halsey表示,信息應該加密或散列,以免被篡改。我認爲哈希算法的複雜性只是YAGNI的一種形式。

我可以看到,對於敏感信息,絕對,但這是一個很好的經驗法則有什麼看法?我錯過了什麼?

回答

3

其實我有一個屬性做到這一點(類似的東西)和有關安全演示這個確切的事情發言。是的 - 你應該散列值的副本......加密它取決於你。如果你加密它,你不會得到模型綁定,但是更容易被攻擊,儘管哈希檢查有幫助。我會盡快發佈代碼並更新這篇文章。誰會認爲Viewstate幫助安全:)

但回答你的問題 - 你可以加密它,但你需要一種方法至少在服務器端驗證它,所以我散列一個值並散列貼出的值然後在屬性中比較散列。加密可以幫助 - 但你需要實現你自己的模型綁定或手動處理這些值

經驗法則通常是任何值可能被惡意覆蓋攻擊你的數據 - 然後你想要一些保護/驗證這些字段。你可以比較服務器端對你知道什麼對他們來說是一個有效的選項(白名單的形式),但是你有複製在加載數據和保存數據的規則相同的形式和獲取有時有點亂,除非就像將用戶的獲取/更新限制爲單個userId一樣簡單。

我的意思是..如果你正在更新說用戶的記錄。通常,對於安全性來說最重要的事情是userId不會被用戶更改以更新不屬於他們的記錄。上獲取邏輯/保存很容易「其中o.UserId ==用戶id」

然而在複雜的基於角色的安全邏輯就變得棘手,而不是作爲清潔限制這樣的記錄更新。在這些情況下,您可以真正利用加密/散列字段。我總是散列用於更新的特定字段。當然 - 他們可以使用之前請求中的其他有效散列字段進行僞造,但潛在破壞的範圍受此限制更爲明顯。