Panduan keamanan integrasi
Pastikan kepatuhan PCI dan komunikasi server pelanggan yang aman.
Siapa saja yang terlibat dengan pemrosesan, transmisi, atau penyimpanan data kartu harus mematuhi Payment Card Industry Data Security Standards (PCI DSS). PCI Qualified Security Assessor (QSA) independen mengaudit dan menyertifikasi Stripe sebagai PCI Level 1 Service Provider. Ini adalah tingkat sertifikasi paling ketat yang tersedia dalam industri pembayaran.
Kepatuhan PCI adalah tanggung jawab bersama dan berlaku pada Stripe dan bisnis Anda. Bila menerima pembayaran, Anda harus melakukannya dengan cara yang patuh PCI. Cara termudah bagi Anda untuk mematuhi PCI adalah dengan tidak pernah melihat (atau memiliki akses ke) data kartu sama sekali. Stripe membuatnya mudah bagi Anda karena kami dapat melakukan tugas berat tersebut untuk melindungi informasi kartu pelanggan Anda. Anda dapat menyederhanakan kepatuhan PCI asalkan:
- Menggunakan salah satu integrasi pembayaran untuk mengumpulkan informasi pembayaran, yang langsung dikirimkan secara aman ke Stripe tanpa melalui server Anda
- Sajikan halaman pembayaran Anda dengan aman menggunakan Transport Layer Security (TLS) sehingga mereka memanfaatkan HTTPS
- Tinjau dan validasi kepatuhan PCI akun Anda setiap tahun.
Validasikan kepatuhan PCI Anda
Semua pengguna Stripe harus memvalidasi kepatuhan PCI mereka setiap tahun. Sebagian besar pengguna dapat melakukannya dengan Kuesioner Penilaian Mandiri (SAQ) yang disediakan oleh PCI Security Standards Council. Tipe SAQ bergantung pada cara Anda mengintegrasikan Stripe dan metode mana di bawah ini yang Anda gunakan untuk mengumpulkan data kartu. Metode tertentu mungkin mengharuskan Anda mengunggah dokumentasi PCI tambahan kepada kami. Jika hal ini diperlukan, Anda dapat mengunggahnya di Dashboard. Jika Anda menggunakan lebih dari satu metode di bawah ini, Anda tidak perlu mengunggah beberapa SAQ.
Jika tidak yakin cara membuktikan bahwa bisnis Anda patuh terhadap PCI (misalnya, pihak ketiga yang membangun integrasi), kami sarankan agar Anda berbicara dengan QSA PCI untuk menentukan cara terbaik memvalidasi kepatuhan sesuai dengan panduan saat ini dari PCI Council.
Persyaratan kepatuhan PCI dengan integrasi
Integrasi | Persyaratan | Rekomendasi |
---|---|---|
API langsung | SAQ D | Saat meneruskan informasi kartu secara langsung ke API Stripe, integrasi secara langsung menangani data tersebut dan Anda diharuskan untuk membuktikan kepatuhan PCI setiap tahun dengan menggunakan SAQ D - SAQ yang paling banyak menuntut. Untuk mengurangi beban ini:
Selain itu, alat pencegahan penipuan kami, Radar, yang mencakup evaluasi risiko dan aturan, hanya tersedia ketika menggunakan salah satu metode tokenisasi sisi klien kami. |
Checkout atau Elements | SAQ A | Checkout dan Stripe.js dan Elements meng-hosting semua input pengumpulan data kartu dalam iframe yang disajikan dari domain Stripe (bukan domain Anda) sehingga informasi kartu pelanggan tidak pernah menyentuh server Anda. Dengan demikian, beban kepatuhan PCI Anda menjadi lebih ringan. |
Connect | SAQ A | Jika Anda secara eksklusif mengumpulkan data kartu melalui platform Connect (sebagai contoh, Squarespace), kami dapat menentukan apakah platform menyediakan dokumentasi PCI yang diperlukan. |
Dashboard | SAQ C-VT | Pembayaran kartu secara manual melalui Dashboard hanya dapat dilakukan dalam kondisi luar biasa, bukan pemrosesan pembayaran rutin. Sediakan formulir pembayaran atau aplikasi seluler yang sesuai bagi pelanggan Anda untuk memasukkan informasi kartu. Kami tidak dapat memverifikasi bahwa informasi kartu yang dimasukkan secara manual aman di luar Stripe, sehingga Anda harus melindungi data kartu sesuai dengan persyaratan kepatuhan PCI dan melengkapi SAQ C-VT setiap tahun untuk membuktikan bahwa bisnis Anda patuh terhadap PCI. |
SDK seluler | SAQ A | Pengembangan SDK seluler Stripe dan kontrol perubahan mematuhi PCI DSS (persyaratan 6.3-6.5) dan diterapkan melalui sistem tervalidasi PCI kami. Ketika Anda hanya menggunakan komponen UI dari SDK resmi kami untuk iOS atau Android, atau membuat formulir pembayaran dengan Elements dalam WebView, nomor kartu dikirimkan langsung dari pelanggan ke Stripe, sehingga Anda memiliki beban kepatuhan PCI yang paling ringan. Jika Anda melakukan sebaliknya, seperti menulis kode sendiri untuk menangani informasi kartu, Anda mungkin bertanggung jawab terhadap persyaratan PCI DSS tambahan (6.3-6.5) dan akan tidak memenuhi syarat SAQ A. Hubungi PCI QSA untuk menentukan cara terbaik memvalidasi kepatuhan Anda sesuai dengan panduan saat ini dari PCI Council. Jika aplikasi Anda memerlukan pelanggan memasukkan informasi di perangkat sendiri, maka Anda memenuhi syarat SAQ A. Jika aplikasi Anda menerima informasi kartu beberapa pelanggan di perangkat Anda (sebagai contoh, aplikasi point of sale), hubungi PCI QSA untuk mempelajari cara terbaik memvalidasi kepatuhan PCI Anda. |
Stripe.js v2 | SAQ A-EP | Menggunakan Stripe.js v2 untuk meneruskan data kartu yang dimasukkan dalam formulir yang di-hosting di situs Anda sendiri mengharuskan Anda mengisi SAQ A-EP setiap tahun untuk membuktikan bahwa bisnis Anda patuh terhadap PCI. Atau, Checkout dan Elements memberi Anda fleksibilitas dan kemampuan penyesuaian formulir yang dapat di-hosting sendiri, sekaligus memenuhi kelayakan PCI untuk SAQ A. |
Terminal | SAQ C | Jika Anda secara eksklusif mengumpulkan data kartu melalui Stripe Terminal, Anda dapat memvalidasi menggunakan SAQ C. Jika Anda berintegrasi dengan Stripe menggunakan metode tambahan yang tercantum dalam tabel ini, Anda harus mengilustrasikan kepatuhan terhadap mereka secara terpisah, seperti yang dijelaskan. |
Peringatan
Jika Anda memproses lebih dari 6 juta transaksi per tahun dengan Visa atau MasterCard, atau lebih dari 2,5 juta transaksi dengan American Express, atau dianggap sebagai penyedia Level 1 oleh salah satu jaringan kartu, Anda tidak memenuhi syarat menggunakan SAQ untuk membuktikan kepatuhan PCI. Brand pembayaran mengharuskan Anda melengkapi Laporan Kepatuhan (RoC) untuk memvalidasi kepatuhan PCI setiap tahun.
Gunakan TLS dan HTTPS
TLS mengacu pada proses pengiriman data secara aman antara client—aplikasi atau browser yang digunakan pelanggan Anda—dan server Anda. Protokol Secure Sockets Layer (SSL) pada awalnya melakukan hal ini, tetapi sudah usang dan tidak lagi aman. TLS menggantikan SSL, tetapi istilah SSL terus digunakan dalam bahasa sehari-hari saat merujuk TLS dan fungsinya untuk melindungi data yang ditransmisikan.
Halaman pembayaran harus menggunakan versi terbaru (TLS 1.2 atau yang lebih tinggi) karena secara signifikan mengurangi risiko serangan man-in-the-middle bagi Anda maupun pelanggan Anda. TLS berusaha untuk mencapai hal-hal berikut ini:
- Enkripsikan dan verifikasikan integritas lalu lintas antara client dan server Anda.
- Memverifikasi apakah client berkomunikasi dengan server yang benar. Dalam praktiknya, hal ini biasanya berarti memverifikasi apakah pemilik domain dan pemilik server adalah entitas yang sama. Hal ini membantu mencegah serangan man-in-the-middle. Tanpanya, tidak ada jaminan bahwa Anda mengenkripsi lalu lintas ke penerima yang benar.
Selain itu, pelanggan Anda lebih nyaman berbagi informasi sensitif di halaman yang disediakan secara jelas melalui HTTPS, sehingga dapat membantu meningkatkan rasio konversi pelanggan.
Anda dapat mencoba integrasi tanpa menggunakan HTTPS jika perlu, dan aktifkan bila Anda siap menerima charge live. Namun, semua interaksi antara server Anda dan Stripe harus menggunakan HTTPS (yaitu, saat menggunakan pustaka kami).
Siapkan TLS
Penggunaan TLS memerlukan sertifikat digital—file yang diterbitkan oleh otoritas sertifikasi (CA). Penginstalan sertifikat ini menjamin client benar-benar berkomunikasi dengan server yang dimaksud, dan bukan dengan penipu. Dapatkan sertifikat digital dari penyedia sertifikat terkemuka, seperti:
Biaya sertifikat bervariasi biayanya, tergantung tipe sertifikat dan penyedia. “Let’s Encrypt” adalah otoritas sertifikat yang menyediakan sertifikat secara gratis.
Untuk menyiapkan TLS:
- Beli sertifikat dari penyedia yang sesuai.
- Konfigurasikan server Anda untuk menggunakan sertifikat. Langkah ini bisa jadi rumit, jadi ikuti panduan instalasi dari penyedia yang Anda gunakan.
Karena TLS adalah rangkaian alat kriptografi yang kompleks, beberapa detailnya mungkin saja terlewatkan. Kami merekomendasikan penggunaan SSL Server Test dari Qualys SSL Labs untuk memastikan Anda menyiapkan semuanya dengan cara yang aman.
Pertimbangan keamanan
Menyertakan JavaScript dari situs lain membuat keamanan Anda menjadi bergantung pada situs mereka dan menimbulkan risiko keamanan. Jika situs mereka sampai dibobol, penyerang dapat mengeksekusi kode arbitrer di halaman Anda. Dalam praktiknya, banyak situs menggunakan JavaScript untuk layanan seperti Google Analytics, bahkan di halaman aman. Meskipun demikian, kami merekomendasikan untuk meminimalkannya.
Jika Anda menggunakan Webhook, gunakan TLS untuk endpoint agar lalu lintas tidak disadap dan notifikasi diubah (informasi sensitif tidak pernah disertakan dalam kejadian webhook).
Meskipun mematuhi Data Security Standards itu penting, Anda tidak boleh berhenti memikirkan keamanan. Beberapa sumber daya yang bagus untuk mempelajari keamanan web adalah:
Data kartu di luar lingkup yang dapat Anda simpan dengan aman
Stripe mengembalikan informasi kartu yang tidak sensitif sebagai respons permintaan charge. Ini termasuk tipe kartu, empat angka terakhir kartu, dan tanggal kedaluwarsa. Informasi ini tidak termasuk dalam kepatuhan PCI, sehingga Anda dapat menyimpan properti ini di database. Selain itu, Anda dapat menyimpan apa pun yang dikembalikan oleh API kami.
Kebijakan Keamanan Konten
Jika Anda telah menerapkan Kebijakan Keamanan Konten, rangkaian lengkap arahan yang diperlukan oleh Checkout, komponen Connect tersemat, dan Stripe.js adalah: