【问题标题】:How to validate a request body with price如何使用价格验证请求正文
【发布时间】:2019-10-30 06:29:18
【问题描述】:

根据

Calculate price on frontend insecure?

应始终在后端验证价格,因为可以修改 http 请求。基本上,在我的市场中,用户可以购买一些东西,并且在该请求正文中,它包含他购买的内容、价格、小计以及该项目的相应目录 ID。然而,似乎一切都可以被操纵。如果我通过遍历他订单中的所有项目来验证小计,它们可能已被修改,因此这是不准确的。如果我要根据 id 在目录中查找实际价格,请求正文中的这些目录 id 也可能已被修改,指向错误的目录项。因此,我如何根据包含项目及其价格、小计和每个项目的目录(数据库)ID 的用户请求正文来验证价格?

另外,如果我使用 SSL,我不能在前端计算价格吗?

【问题讨论】:

    标签: server-side client-side


    【解决方案1】:

    整个购物车应该留在服务器上,客户端显示购物车并要求确认。价格也可以在客户端计算,但以后必须在服务器上重新计算。

    您不应丢失购物车数据的踪迹(即将其发送给用户并等待其返回),因为之后您将无法再信任它。您必须在服务器上保存购物车/订单数据,并向客户端发送已保存购物车数据的 id 以及要显示的数据本身(价格等)。然后用户发回确认和 id,而不是整个数据。使用 id 您可以在服务器上恢复购物车/订单信息、价格和所有信息,因此价格永远不会来自用户。

    如果他的技术足够好,用户发送给您的任何内容都可以由他更改。

    使用加密没有帮助,加密避免了在源(客户端)和目标(服务器)之间的传输过程中发生的数据更改。它不保证客户端本身是可信赖的或数据是正确的。 伪造发生在客户端,在加密发生之前(用户可以根据自己的意愿操纵 url 数据或 POST 数据,在加密之前更改价格)。

    此外,加密通常保证服务器所有者是客户端的正确所有者(服务器有证书),它不保证用户或客户端软件是可信赖的,因此使用修改过的浏览器的用户是完全合法的,不能在任何方式都可以区分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-30
      • 1970-01-01
      相关资源
      最近更新 更多