Saya sedang menyelidiki kemungkinan untuk menggunakan Apple Pay transactionId sebagai pembelaan untuk serangan ulangan di gerbang pembayaran yang sama. Pertahanan harus bergantung pada bidang yang berpartisipasi dalam tanda tangan dan unik.

Namun Referensi Format Token Pembayaran menjelaskan paymentData.header.transactionId sebagai

Pengenal transaksi, dibuat di perangkat.

Yang tidak cukup untuk memperlakukannya sebagai unik secara global.

3
Vadzim 26 Oktober 2017, 23:53

1 menjawab

Jawaban Terbaik

Berikut adalah contoh pengujian token ApplePayJS:

{
    "paymentData": {
        "version": "EC_v1",
        "data": "...",
        "signature": "...",
        "header": {
            "ephemeralPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6jY12R9PoL7bzaC3/ibs6q6+g/cqjSkiO3GVFld2NVUA6kRlq0iJRT+XzfmGFvRs/G2qwgmWY8fKu7p6Ktgxug==",
            "publicKeyHash": "AJiEM3d+czut7s1t4QdtRBPjSOxw0D6iWSp1MUdXueM=",
            "transactionId": "f8f0c804922303decba1a8a4f7c503df1a6314e44e8db5ae7eb6b7fe0323513b"
        }
    },
    "paymentMethod": {
        "displayName": "MasterCard 1471",
        "network": "MasterCard",
        "type": "debit"
    },
    "transactionIdentifier": "F8F0C804922303DECBA1A8A4F7C503DF1A6314E44E8DB5AE7EB6B7FE0323513B"
}

Dalam praktiknya selalu memiliki bidang transactionIdentifier tingkat atas yang cocok dengan case-insensitive yang bersarang paymentData.header.transactionId.

Dan dokumen mengatakan:

pengidentifikasi transaksi

Pengidentifikasi unik untuk pembayaran ini.

Pengidentifikasi ini cocok untuk digunakan dalam tanda terima.

Penelusuran Google juga menemukan Bagaimana cara memproses pengembalian dengan Apple Pay:

Di Jepang, Anda juga dapat menggunakan ID transaksi pada tanda terima untuk menemukan pembelian dan memproses pengembalian.

Juga transactionId adalah 64 karakter hex atau 32 byte penuh. Yang lebih panjang dari format Unique Transaction Identifier. Jadi ada cukup ruang untuk menjadi benar-benar unik secara global.

Masih mencari lebih banyak bukti langsung yang kredibel.

0
Community 20 Juni 2020, 12:12