Security 当作为隐藏输入字段提交时,如何防止用户覆盖购物车中的总成本?

Security 当作为隐藏输入字段提交时,如何防止用户覆盖购物车中的总成本?,security,paypal,Security,Paypal,我在接受付款方面遇到了严重的问题 我在一个隐藏字段中传递总金额 <input type="hidden" name="checkout-flow-support.merchant-checkout-flow-support.shipping-methods.flat-rate-shipping-1.price" value="129.00"/> 一些用户使用firebug将该值更改为2,并提交了表单。我们没有得到129美元,只收到了2美元 我不知道该怎么做,快来帮我 我

我在接受付款方面遇到了严重的问题

我在一个隐藏字段中传递总金额

<input type="hidden"
  name="checkout-flow-support.merchant-checkout-flow-support.shipping-methods.flat-rate-shipping-1.price"
  value="129.00"/>

一些用户使用firebug将该值更改为2,并提交了表单。我们没有得到129美元,只收到了2美元

我不知道该怎么做,快来帮我

我在一个隐藏字段中传递总金额

<input type="hidden"
  name="checkout-flow-support.merchant-checkout-flow-support.shipping-methods.flat-rate-shipping-1.price"
  value="129.00"/>
不要这样做


由于您知道用户试图购买的物品,请计算服务器端的成本。

这是一个教科书上的错误,类似于在实体店询问客户该物品的成本并信任该响应。这是一般安全原则的一个特例:不要信任客户。霍博达夫的回答是正确的;在服务器端计算价格、税费等。

对于支付服务提供商(PSP),一般通信设置通常如下所示:

1) 您的服务器联系PSP并设置交易,指定所需金额和您的PSP帐户详细信息

2) PSP使用事务标识符进行响应,然后将其添加到表单中。此交易标识符不包含有关价格的任何信息-它只是服务器使用PSP设置的交易记录的标识符

3) 访客填写表格并发送给PSP。然后将访问者重定向回您的站点

4) 您的服务器查询PSP服务器并检查交易是否成功(即访客付款方式是否同意PSP的交易,等等)

服务器到PSP的通信通常使用库(如curl)完成

谷歌提供了许多关于如何正确处理事务的库/示例(根据我的经验,大多数其他PSP也这样做):


具体的沟通细节可能因PSP而异,但基本上不需要将“总金额”通过表格显示给访客。这一切都是服务器对服务器完成的,因此访问者不可能更改详细信息。

-1:您似乎完全没有抓住要点。这个问题与服务器PSP通信无关,但开发者在通过用户输入接受成本时出现了严重错误。这通常会发生,因为提出问题的人误解了他们的应用程序、PSP和访客浏览器之间的通信过程。简单地告诉他们“不要”或“那不好”通常没有多大帮助。在这里,我试图解释他们应该做什么。我认为艾伦的回答是公平的。回答的最后一句解释了“为什么”部分…嗯。这就像我去问一个机械师,当我把油门踩到地板上时,如何防止我的车加速失控,他解释内燃机是如何工作的,这就是卡诺效率。我很确定你在快速编辑中添加了最后一句话。看,事情是,如果这是一个捐赠场景,你可以做类似的事情。基本上将其视为客户在购买礼品卡。在这个过程的早期,你让他们挑选面额,然后他们就买了这个产品,这是众所周知的购物车。你根据开始时输入的初始值给他们所有的收据和奖励,他们不能在最后一刻更改,最终支付一个价格,但得到另一个价格的奖励。好吧,谢谢你的信息。如果你在你的网站上捐赠了15美元,并且只是一个带有隐藏字段的html表单,那就有一个情况了。它将如何帮助你:(如果是捐赠,那么金额当然是用户定义的。你的问题并不表明这是捐赠类型的场景。如果是,那么为什么用户捐赠2美元而不是129美元更重要?分布式计算俱乐部的第一条规则是:你不信任客户。分布式计算俱乐部的第二条规则是:你不信任客户。)分布式计算俱乐部的第三条规则是:如果这是你第一次来,你会违反规则,我们会为此痛打你。