【问题标题】:How to securely process transactions如何安全地处理交易
【发布时间】:2016-08-23 09:25:31
【问题描述】:

我正在创建一项服务,用户必须为某些产品付费。现在,我正在为交易部分苦苦挣扎。

如果用户进入结帐页面,我正在创建交易。支付网关有以下 URL:

ReturnUrl -> The URL the costumer is being redirected to after a succesfull payment (after clicking "Back to Webshop")
NotifyUrl -> The URL (server-to-server call) thats being called when the user finishes his payment, when the costumer is being redirected back via ReturnUrl
CallbackUrl -> The URL thats being called when the user closes his browser after a succesfull payment, without clicking the "Back to Webshop" button, and hence not being redirected via ReturnUrl

现在,我正在努力解决如何在事务返回 NotifyUrl 或 CallbackUrl 时安全地将事务设置为完成。 当我将事务放入数据库时​​,我正在生成一个令牌,因此未经授权的用户无法修改/更改任何内容。但是我正在将带有 POST 的令牌发送到我的支付提供商,这意味着如果他们知道将 GET 请求发送到的 URL 以及令牌 en transaction_id 等所有信息,他们可以在那里浏览而无需实际支付并欺骗我的服务器思考请求来自我的付款处理器。

我将如何正确地做到这一点?

【问题讨论】:

  • 我不确定我能否遵循您的逻辑。某人究竟可以浏览什么以及在哪里浏览?您是否说您的交易 ID 是串行的(因此有人可以弄清楚)并且您没有检查请求是否来自您的支付提供商?

标签: php e-commerce


【解决方案1】:

至少您应该验证服务器到服务器调用的来源(IP 地址或域),以确保发出请求的是支付处理器。

一些支付处理器(multisafepay)只是向 NotifyUrl 发送一条唤醒消息,简单地说明支付状态某某发生了变化。然后,您的服务器可以安全地调用支付处理器,请求确切的详细信息并相应地更新本地状态。

此外,在这些情况下使用 ssl 总是明智的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    相关资源
    最近更新 更多