如何在没有<;隐藏>;因为这可以从客户端控制台进行更改


How to pass transaction data parameters(like amount) through a form without <hidden> as this can be changed from the client console

我有一个网站,当用户在购物车中添加商品后"继续结账"时,有一个表格可以输入用户详细信息。订单的项目字符串和金额以隐藏参数的形式添加,这样它们就可以进入下一页进行php处理,并最终在数据库中作为order进行更新。从黑客的角度来看,我可以很容易地在客户端的"inspect元素"中将-ORDR/cart字符串和-Amount-值更改为较小的值,更改后的值将在下一个表单中继续。解决这个问题的策略是什么?

最简单的解决方案是使用服务器端会话。这将在服务器上以客户端无法更改的值存储金额。当你完成订单时,确保他们支付了他们应该支付的费用。这会占用服务器上的少量内存。

另一种选择是使用HMAC。计算订单中各种值的HMAC,并通过您的支付系统传递HMAC。确保订单中的值在交易结束时为您提供与您之前生成的HMAC相同的HMAC。这将不使用服务器上的内存,但需要一点额外的CPU时间。