我目前正在实现BitPay API (在PHP中)。所有这些都很好,但我有点担心收到通知时可能存在的安全风险。
BitPay API使用POST请求向包含JSON字符串的给定通知url发送状态更新通知:
{ "id": "123BitPayInvoiceID", "url": "https://bitpay.com/invoice?id=123BitPayInvoiceID", "posData": "6G38ZL", "status": "paid", "btcPrice": "0.0512", "price": 29.14, "currency": "USD", "invoiceTime": 1407881291063, "expirationTime": 1407882191063, "currentTime": 1407882058099, "btcPaid": "0.0512", "rate": 568.69, "exceptionStatus": false, "bitpay": { "id": "123BitPayInvoiceID", "url": "https://bitpay.com/invoice?id=123BitPayInvoiceID", "posData": "{\"paymentID\":\"123PAYMENTID\",\"orderID\":\"123ORDERID\"}", "status": "confirmed", "btcPrice": "0.0512", "price": 29.14, "currency": "USD", "invoiceTime": 1407881291063, "expirationTime": 1407882191063, "currentTime": 1407882058099, "btcPaid": "0.0512", "rate": 568.69, "exceptionStatus": false } }
当我在我们的数据库中查找付款时,我想将其更改为“确认”。
在我看来,这是一种安全风险,因为任何人都可以发送假通知;启动付款并希望确认付款的人可以发送此请求,状态设置为“已确认”。
我的问题:
提前感谢!
发布于 2016-05-27 09:22:08
你所寻求的所有建议都在他们的医生里.
https://bitpay.com/docs/invoice-callbacks
我们建议您打开一个非标准端口,并在notificationURL中指定该端口,而不是白色地列出BitPay IP地址,因为它们可能会在没有通知的情况下更改。由于我们尚未签署这些通知,因此不应完全信任它们。我们建议在收到这些通知时,根据API验证这些通知,以确保所提供的数据是真实的。例如,当发票支付通知传入时,您应该向我们的API发出请求,以检查该发票的状态,以确保它实际上已经支付。这为核实已付款订单提供了额外的安全保障。
https://stackoverflow.com/questions/37479293
复制相似问题