2016-05-27 6 views
0

私は現在、BitPay API(PHP)を実装しています。すべて正常に動作しますが、通知を受け取るときに起こりうるセキュリティリスクを少しは心配しています。BitPay API通知:セキュリティリスク?

BitPayのAPIは次のようにJSON文字列を含む、指定された通知URLにPOST要求を使用してステータスを更新してこれらの通知を送信します。

{ "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 } }

私は私達のデータベースでのお支払いを検索私はそれを「確認済み」に変更したい。

誰もが偽の通知を送ることができるので、これはセキュリティリスクです。支払いを開始し、その支払いを確認することを希望する人は、ステータスが「確認済み」に設定されたこの要求を送信することができます。

私の質問は:

  1. が最初の場所で私を心配すべきか?私はリクエストがどこから来たのかを確認することができました。推測するのは簡単ではない通知URLを使用しますが、私はまだ安心してセキュリティを感じることはできません。
  2. 通知が届いたら、いつでも通知を不信にしてステータスリクエストをAPIに送信できます。これは良い方法でしょうか。
  3. これらの通知を安全に使用するための他の(より良い)方法はありますか?

ありがとうございます!

答えて

0

あなたが探しているすべてのアドバイスは自分のドキュメントにある...

https://bitpay.com/docs/invoice-callbacks

我々は、非標準のポートを開き、notificationURL以内にそのポート を指定する代わりにすることができ助言しますホワイトリストBitPay IP アドレスは予告なしに変更されることがあります。これらの通知にまだ署名していないので、 であるため、 完全に信頼されるべきではありません。 GoogleのAPI に対してこれらの通知を確認し、提示されたデータが本物であることを確認することをおすすめします。 たとえば、請求書のお支払い通知が届いた場合は APIに請求書のステータスを確認して が実際に支払われたことを確認するようにリクエストする必要があります。これにより、 の有料注文を確認するセキュリティが強化されます。

+0

あああなたは正しいです。私はそれを見落としました、ありがとう! – Graftak