【问题标题】:Cannot track the user securely who made the purchase in PayPal IPN无法安全地跟踪在 PayPal IPN 中进行购买的用户
【发布时间】:2013-08-05 18:50:13
【问题描述】:

我正在构建一个使用 paypal 支付系统的网站,但遇到了一个安全挑战问题:

我有以下来自 paypal IPN 的表格:

<form class="form-horizontal" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="ABCDEFEGDEDS">
<input type="hidden" name="on0" value="Balance">
<label>Amount</label>
    <select class="form-control"  name="os0" id="deposit_paypal">
        <option value="1000">$1000.00 USD</option>
        <option value="2000">$2000.00 USD</option>
    </select>
<input type="hidden" name="custom" value="<?php echo $user->id; ?>">
<input type="image" src="https://www.paypalobjects.com/ru_RU/i/btn/btn_buynow_SM.gif" border="0" name="submit" alt="PayPal">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">

我想知道是哪个用户进行了交易。搜索互联网,我发现我可以像上面那样创建一个自定义字段。我跟踪用户的原因是我应该在购买完成后将余额添加到他的虚拟帐户中。

  1. 但问题是:如果恶意代码(javascript 恶意软件)只是将自定义表单字段中的用户 ID 更改为 4 怎么办? 余额将添加到 ID 为 4 而不是前一个的用户。

  2. 好的。有人会建议我在发送到贝宝以供以后比较之前将表单数据插入数据库。 第二个问题出现了。如果用户在按下提交按钮后没有完成订单就退出了贝宝页面怎么办?这是我无法追踪的,因为 paypal 不属于我,它会在其他页面中打开。

请问,这些问题还有其他解决方案吗?我想要一些最佳实践,以便我可以安全地跟踪哪个用户通过 paypal IPN 进行了购买。

【问题讨论】:

    标签: security paypal paypal-ipn


    【解决方案1】:

    您可以将数据库中的数据存储在一个临时表中,然后在 IPN 完成后,您可以将其移至永久表中。设置一个 cron 作业或计划任务,每隔 24 小时左右检查一次您的系统,并删除在那段时间内未完成的所有记录。

    【讨论】:

    • 我认为这也有一些安全问题,@PP_MTS_Chad。假设恶意代码将 A 人的 id 从 1 更改为 4,然后您将其写入临时表。但是A人没有完成交易就退出了。但是,您的临时文件夹中有它。第二个 B 人在 24 小时内完成了他的交易。在这种情况下,恶意软件还将其 id 从 2 更改为 4。钱将转移给 id 为 4 的人。因此,我必须有其他解决方案..但我找不到..
    • 您可以创建托管按钮或即时加密,以便无法更改特定数据。
    猜你喜欢
    • 1970-01-01
    • 2013-10-06
    • 2023-03-10
    • 2015-03-10
    • 2016-04-22
    • 2013-07-13
    • 2020-12-03
    • 1970-01-01
    • 2011-11-20
    相关资源
    最近更新 更多