代码之家  ›  专栏  ›  技术社区  ›  JP.

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

  •  1
  • JP.  · 技术社区  · 14 年前

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

    我想保证,当用户提交购买所述产品的表单时,我最初发送的成本是相同的,即ViewModel中的成本属性没有更改。对于普通用户来说,这不是问题,但是对于恶意用户来说,在途中更改值相对简单,这样我的产品就需要花费1美元而不是999美元。

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

    有人能告诉我这是如何定期进行的和/或我提出的解决方案是否有问题吗?

    事先谢谢,

    日本药典

    2 回复  |  直到 14 年前
        1
  •  4
  •   Dan Puzey    14 年前

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

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

        2
  •  0
  •   Todd Smith Brandon    14 年前

    总是回到数据库。可用数量、价格等可以随时更改,如果用户要求的商品不再可用,您需要在结账前通知用户。