我对 2016-2017 Merchant Security Roadmap 有疑问.我多年来一直在运营一个使用 Paypal 的网站,并希望遵守 IPN Verification Postback to HTTPS要求。我担心我在这里收到的任何答复都不是来自 Paypal 代表的官方答复,但看来我别无选择,因为 PayPal support page此处的“询问我们的社区”链接点。
根据我对 IPN 验证回发到 HTTPS 要求的理解,它仅指的是我的网站向 paypal 网站回发以验证任何传入的 IPN。但是,该文档令人困惑,因为它引用了一些我从未在我的代码中使用过的 url,即 ipnpb.paypal.com 和 ipnpb.sandbox.paypal.com。
我希望有人能为我回答这些问题:
1) 我的代码回发到 https://www.sandbox.paypal.com/cgi-bin/webscr 用于沙箱或 https://www.paypal.com/cgi-bin/webscr 用于生产操作。这些 paypal 端点会继续工作还是我必须更改它们?
2) 如果您向传入的 IPN 请求发送 301 或 302 重定向, Paypal 网关是否会遵循重定向并将 IPN 重新发布到新的 url? PayPal 是否会在 IPN 尝试中失败?
3) 如果我修改我的 IPN 处理 url 以发送 400 BAD REQUEST,如果有任何不安全的(即非 HTTPS)请求访问它会怎样? PayPal 系统会采取任何行动,还是会因为我拒绝回复而丢失通知?
4) 鉴于 Paypal 似乎为每笔交易/定期付款/订阅存储了 IPN 网址,如果 Paypal 系统为 IPN 通知指定了非 HTTPS 链接,那么 Paypal 系统将如何处理我的旧交易? paypal 会直接切换到 HTTPS 吗?订阅/交易/任何东西会被取消吗?如果我们想要遵守,这似乎是非常重要的信息。
编辑:我会在这些问题中再添加两个:
5) paypal 是否提供在我的帐户上尝试的传入 API 请求的日志,以便我可以检查是否使用 GET 而不是 POST?
6) paypal 是否有任何 UI 或界面,我可以在其中获取可能为我的系统生成 IPN 的操作列表,以便我可以检查 IPN url?我的网站在我们的网站上使用了 3-5 个不同的 url 来进行 IPN 报告,我们仍然在其中一些网站上收到 IPN。很高兴看到我们是否可以淘汰一些旧的 IPN 脚本并检查是否使用了 HTTPS 或 HTTP。
最佳答案
绝对非官方,但由于指令实际上是在一年前发布的(并修改为将实现推迟到 2017 年),只是分享早期实现的经验 - 我错过了延期通知:)
底线:TLS 1.2 用于ALL与(绑定(bind))Paypal 的安全通信
PayPal is upgrading the protocols used to secure all external connections made to our systems.
如果您完成了这项工作(如果您支持大量遗留资源,这可能会很困难),那么就安全路线图而言,您应该是“优秀的”。
强调 to 是我的,因为他们没有提到与 your 资源的 Paypal 通信(相反:
Paypal -> your site
)。然而,恕我直言,作为一个电子商务应用程序,并且在经历了实现的努力之后,我努力寻找一个理由,不在您的应用程序中为任何/所有电子商务/支付相关流程实现它(redirecturl
,cancelurl
等)
您可以验证/测试您的设置为 described here - 包括您关于重定向、错误代码的问题。通过 IINM,Paypal 文档包含有关如何正确响应 IPN 消息(或与此相关的任何 API)的协议(protocol),以及故障协议(protocol)(例如 retry mechanism)
您的最后一个问题(订阅)最好由 Paypal 回答。我对此事的看法可以追溯到“底线”——全面实现 https/TLS 1.2..
嗯..
更新
fails completely to address 301/302 redirects. It does seem to address what might happen if I send a 400 response. Sounds like that would result in PayPal retrying an IPN up to 15 times
所有 API 都有协议(protocol)供使用。 official protocol for IPN状态:
After receiving the IPN message from PayPal, your listener returns an empty HTTP 200 response to PayPal. Otherwise, PayPal resends the IPN message.
如果您想测试“否则”(回复:如果 30x/40x 或除空
200
之外的任何 http 响应怎么办) ,那么您可以 - 但协议(protocol)已记录在案。注意:
https://ipnpb.x.x
端点也在此处记录至于端点 URL - 安全升级是关于 HTTP 1.1 和 TLS。 documents include the base urls你提到(关于何时准备好进行测试以及何时执行生产限制的日期)-回复:所以在 HTTP 1.1/TLS 1.2 的上下文中,无论什么 API 端点资源(完整路径 -
[baseurl]/some/resource/endpoint
) 包含在安全更新中。我不为 Paypal 工作,也没有声称精通他们的所有 API。我会查看您正在使用的特定 API 并检查 API 级别更改 - 重新:端点/资源/字段等,如果有的话(
ipnpb
资源是一些 API 级别更改的示例/更新)。
关于php - 根据 2016-2017 安全升级处理 Paypal IPN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42377941/