jQuery 是一种可接受的方法来处理电子商务网站中的产品变化计算吗?
Posted
技术标签:
【中文标题】jQuery 是一种可接受的方法来处理电子商务网站中的产品变化计算吗?【英文标题】:Is jQuery an acceptable method to process product variation calculations in an E-Commerce site? 【发布时间】:2013-05-18 23:04:37 【问题描述】:我正在创建一个非常简单的商店,其中包含一种产品,用户可以在其中选择不同的选项,并且根据选择的选项,这将产生该项目的总成本。例如,如果用户选择红色变体,价格将上涨 5%,如果用户选择蓝色变体,则价格将上涨 10%。
目前我正在使用 jQuery 进行计算,然后将它们传递到一个空字段,然后将其发布到支付网关。这种方法安全吗?从理论上讲,用户可以打开 Firebug 或 Chrome 开发者工具并在将其发布到网关之前编辑值(为零),但这难道不能适用于类似的产品变化计算方法吗?我正在尝试弄清楚这是否是一个问题,但有没有更好的方法?
【问题讨论】:
计算/验证应该在服务器端完成,因为你提到有足够知识的人可以绕过你的计算或发送更改的数据,所以这不是一种安全的方法...... 感谢darkajax,它为我解决了问题 【参考方案1】:这绝对是个问题,正如您自己所说,用户可以修改这些值。
因此,您将在客户端向用户显示价格,该值是如何生成的并不重要,因为它永远不会被服务器信任,也永远不会传递给支付网关。
用户按下“立即购买”,被重定向到支付网关,但首先通过您自己的服务器。服务器应验证产品并计算价格。
最终价格(由您自己的服务器计算)将在付款时显示给用户。
在客户端,您可以继续使用 JQuery 生成值,或者让服务器通过 AJAX 请求返回它们。但这只是为了用户体验,这些值是不可信的。
【讨论】:
感谢 Gerve,这真的很有帮助。我会试试看的。【参考方案2】:在进行 PayPal 付款后,PayPal 会向您指定的 url 发送 IPN(Instant Payment Notification) 消息。您必须重新发送它以验证该消息是否来自 paypal。之后,为了确保用户支付了正确的金额,您可以从 IPN 获取值(它可能带有用户 ID、交易 ID 等......)并使用您的数据库进行检查。
一些有用的链接:
More about IPN
Paypal Developers Guide
Pyapal IPN
电子商务网站的第一条规则:永远不要信任用户 所以,这是正确的过程:
使用 jQuery 计算后,将它们传递到一个空字段,然后将其发布到支付网关,将用户名/ID、交易和金额存储在数据库中。创建方法,使用来自 paypal 的 IPN 响应验证存储的值。
如果值匹配,支付成功。否则,标记它以供以后手动验证(您应该存储 id,以便在 paypal 上更容易找到)。
【讨论】:
【参考方案3】:如果您选择此方法,您可能应该将产品配置(如字符串表示或 JSON 或逗号分隔字段等)存储在隐藏字段中,计算价格(客户端或服务器端)并仅将价格显示为信息给客户。
当他提交配置时,验证它并在服务器上再次计算 pice。
这样客户可以更改配置(通过 Firebug 左右),但无法更改价格,因为它是基于配置计算的。
嗯,我就是这么干的。
【讨论】:
以上是关于jQuery 是一种可接受的方法来处理电子商务网站中的产品变化计算吗?的主要内容,如果未能解决你的问题,请参考以下文章
Jquery Datatables Grouping Plugin - 一种可扩展两级分组的方法?