ASP.NET MVC - 确保数据完整性

时间:2010-10-28 22:30:28

标签: c# asp.net-mvc

我遇到了我期望的是Web开发中的常见问题。我有一个ASP.NET MVC 2.0电子商务网站。我通过视图模型将商品的成本传递到产品页面视图 - 此费用可能因用户类型,用户历史记录,购买数量等而异。

我想保证当用户提交表单购买所述产品时,我最初发送的成本是相同的,即viewmodel中的cost属性没有改变。对于普通用户来说这不是问题,但对于恶意的人来说,更改途中的价值相对简单,以便我的产品成本,例如$ 1而不是$ 999。

显然,我可以回到数据库并在提交表单后重新计算成本 - 但这似乎是一项昂贵的操作,我想知道这是如何正常完成的。在我看来,显而易见的解决方案是获取字段的哈希码(或仅加密值)并将其作为隐藏输入添加到表单中,并确保成本字段的哈希码(或加密值)相同。

有人能告诉我这是如何定期完成的和/或我提出的解决方案是否存在问题?

提前致谢,

JP

2 个答案:

答案 0 :(得分:4)

通常通过在服务器上重新计算来完成(这是否意味着命中数据库取决于您的业务和服务器上的缓存层)。您存储或发送给客户端的任何内容都会被篡改,因此您绝对不能信任它。您网站的安全性/可靠性值得进行昂贵的操作!

除此之外:在宏伟的计划中,它不可能像你想象的那样昂贵。我建议你担心费用会成为一个经过验证的问题,而不是之前。

答案 1 :(得分:0)

始终返回数据库。可用数量,价格等可随时更改,如果所请求的商品不再可用,您可以在结账前通知用户。

相关问题