2010-10-28 72 views
1

我遇到了我期望的在web開發中的一個常見問題。我有一個ASP.NET MVC 2.0電子商務網站。我通過視圖模型將項目成本傳遞到產品頁面視圖 - 此成本可能因用戶類型,用戶歷史記錄,購買數量等而異。ASP.NET MVC - 確保數據完整性

我想保證當用戶提交表單購買該產品,我原來發送的成本是相同的,即視圖模型的成本屬性沒有改變。對於普通用戶來說,這不是問題,但對於惡意的人來說,在途中更改價值是相對簡單的,這樣我的產品成本就會降低,例如$ 1而不是$ 999。

顯然,我可以回到數據庫並在表單提交後重新計算成本 - 但這看起來像是一個昂貴的操作,我想知道這是如何正常完成的。我腦海中最明顯的解決方案是獲取字段的哈希碼(或者只是加密值),並將其作爲隱藏輸入添加到表單中,並確保成本字段的哈希碼(或加密值)相同。

有誰能告訴我這是如何定期完成和/或如果我的建議解決方案有問題?

由於提前,

JP

回答

4

它通常通過重新計算在服務器上完成(這是否意味着擊中DB與否取決於業務&緩存層在服務器上)。您存儲或發送給客戶的任何信息都可能被篡改,因此您絕對有權不信任它。您網站的安全性/可靠性值得您付出昂貴的代價!

除此之外:在事物的宏偉計劃中,它不可能像您想象的那樣昂貴。我建議你擔心費用,當它成爲一個證明的問題,而不是之前。

+0

謝謝丹!我有點期待這個答案,但我喜歡有一個像StackOverflow這樣的地方,我可以問我的「基本」問題! – 2010-11-01 03:19:05

0

總是回到數據庫。可用的數量,價格等隨時都可能發生變化,並且您希望在結帳之前通知用戶他們的商品是否不再可用。