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 - 一种可扩展两级分组的方法?

base64原理,使用场景

base64加密和解码原理和代码

为我的新 JQuery 插件提供外部样式表的最佳方式?需要策略

有没有一种可移植的方法来设置flock() 的超时时间?

是否有一种可移植的(C++ 标准)方法来计算前一个对齐的指针?