9

我正在尝试在 .net 中处理信用卡交易,它在 Safari、Opera 和 IE 中完美运行。当我在 Firefox 中尝试相同的交易时,它会发送两个请求,最终我会收到一张双重收费的卡。从 Google 上的快速搜索来看,这似乎是 Firebug 的一个问题,但我无法找到阻止这个双重帖子的方法。

有谁知道如何防止 Firefox(和 Firebug)这样做?

4

7 回答 7

8

使用一个nonce,一个只使用一次的唯一键。

将唯一编号连同表单字段发送到浏览器(这通常通过隐藏的输入字段完成),并将副本与交易一起存储在服务器上。在表单中,更改提交时的数字。在处理您的请求时验证密钥是否匹配。

也可能对前端发生的事情有明确的解释,并且可以在客户端消除该问题。最好在服务器上解决双重提交问题,因为可能发生双重提交的方式有很多。

于 2008-11-12T04:17:14.883 回答
4

它可能不是萤火虫。

去年我遇到了类似的问题(尽管在我的情况下,每次查看独立媒体文件时都会出现一系列无休止的 GET 请求:GIF、JPG、WMV 等)。

我禁用了所有扩展,然后尝试一次重新启用它们,检查每个扩展以查看是否导致问题。就我而言,它原来是 Skype 扩展。

所以不要仅仅依靠二手知识,它是萤火虫。如果你真的深入研究这个问题,你可能会发现这完全是另外一回事。

于 2008-11-12T04:58:27.607 回答
2

我使用 Firebug 1.2.1,它已经预防了双重发布错误,当您想查看 AJAX 响应时,它会向您显示此警告:

Firebug 需要 POST 到服务器以获取 url 的此信息: http://example.url/

这第二个 POST 可能会干扰某些站点。如果要再次发送 POST,请在 Firefox 中打开一个新选项卡,使用 URL 'about:config',将布尔值 'extensions.firebug.allowDoublePost' 设置为 true 每次重新启动 Firefox 时都会重置此值 https://bugzilla.mozilla.org/show_bug.cgi?id=430155 已发货。

于 2008-11-12T04:24:20.327 回答
1

我曾经在 Firefox 中也遇到过这种情况——在某些情况下,当您“查看源代码”时可能会发生这种情况。Firebug 双张贴听起来像一个类似的问题。

不过,最后,你现在抓住了这一点是一件好事——如果信用卡双重收费可以像下订单后点击后退按钮一样简单,那就太糟糕了。(作为电子商务公司的开发人员,我可以告诉您,这种情况一直都在发生。如果您的结帐流程有四个步骤/页面,想象一下在新的浏览器窗口中打开第 3 步可能造成的破坏,在第一个窗口中返回上一步,然后在第二个浏览器窗口中完成订单......相信我,我已经学会了艰难的方法。你会惊讶于人们为绕过夏威夷运费附加费所做的事情步骤 3 的计算。)

随机数是一种解决方案;另一种是简单地在处理信用卡的页面上进行完整性检查。查看您的数据库并说“等一下……这个订单已经收费了!” 然后吐出优美的错误信息。希望这可以帮助!

于 2008-11-12T04:49:53.443 回答
1

即使 nonce 不是您解决此问题的方法,您也需要有一个 nonce!对于一个人想要诱骗另一个人做某事的任何类型的网站(例如涉及金钱的任何地方),这都是非常重要的。它被称为跨站点请求伪造,通常被随机数阻止。如果您需要更多信息,请参阅http://en.wikipedia.org/wiki/CSRF 。

于 2010-11-22T07:22:21.077 回答
0

我有同样的问题——虽然没有意识到它是特定于 FireBug 的。无论如何,您确实应该正确解决此问题,以防用户单击后退按钮并重新提交。

通常的方法是在表单的隐藏字段中为交易设置一个唯一的令牌。当服务器端接收到表单时,它会阻止进行另一个事务。

于 2008-11-12T04:19:18.997 回答
0

感谢您在这里的出色回应。就我而言,它原来是 FireBug(版本 1.05)和 FireFox 2.0.0.20。一旦我关闭了 FireBug 插件,双帖就停止了。

于 2008-12-28T04:47:41.000 回答