根据
Calculate price on frontend insecure?
价格始终应在后端进行验证,因为可以修改http请求。基本上,在我的市场中,用户可以购买商品,并且在该请求正文中,它包含他购买的商品及其价格,小计以及该商品的相应目录ID。但是,似乎一切都可以被操纵。如果我要通过遍历他的订单中的所有项目来验证小计,则可以对其进行修改,因此这是不准确的。如果我要根据ID查找目录中的实际价格,则请求正文中的这些目录ID也可能已被修改,指向错误的目录项。因此,如何根据用户请求正文来验证价格,其中包含项目及其价格,每个项目的小计和目录(数据库)ID?
如果我使用的是SSL,那么我不能在前端计算价格吗?
答案 0 :(得分:1)
整个购物车应保留在服务器上,客户端显示购物车并要求确认。价格也可以在客户端上计算,但是稍后必须在服务器上再次计算。
您不应该丢失购物车数据的踪迹(即,将其发送给用户并等待其返回),因为之后您将无法再信任它。您必须将购物车/订单数据保存在服务器上,并向客户发送保存的购物车数据的ID以及要显示的数据本身(价格等)。然后,用户发送回确认信息和ID,而不是全部数据。有了ID,您就可以在服务器上恢复购物车/订单信息以及价格和所有价格,因此价格永远不会来自用户。
只要技术水平足够,用户发送给您的任何内容都可以由他更改。
使用加密无济于事,加密可以避免在源(客户端)和目标(服务器)之间旅行期间对数据进行更改。它不能保证客户端本身是可信任的或数据正确的。 伪造发生在客户端进行加密之前(用户可以根据需要操纵url数据或POST数据,更改价格,然后再加密)。
此外,加密通常可以确保服务器所有者对客户端是正确的(服务器具有证书),它不能保证用户或客户端软件是可信的,因此使用修改后的浏览器的用户是完全合法的,并且不能任何方式都可以区分。