如何使用价格验证请求正文

How to validate a request body with price

根据

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

此外,如果我使用的是 SSL,那么我不能在前端计算价格吗?

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

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

用户发给你的任何东西,只要他技术够好,他都能改。

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

另外,加密通常保证服务器所有者对客户端来说是正确的(服务器有证书),但不保证用户或客户端软件是可信的,所以使用修改浏览器的用户是完全合法的无法以任何方式区分。