it-swarm-id.com

Meyakinkan perusahaan untuk tidak menyimpan nomor kartu kredit di webapp kami

Perusahaan tempat saya bekerja membutuhkan sistem untuk melakukan tagihan kartu kredit bulanan ke rekening pelanggan. Pelanggan akan dapat memperbarui informasi kartu kredit mereka dari antarmuka online yang ditulis dalam PHP (yang akan disajikan melalui HTTP melalui SSL). Biaya bulanan akan dijalankan secara manual melalui admin yang dilindungi kata sandi area antarmuka yang sama, yang pada dasarnya akan berarti panggilan batch ke API Authorize.Net.

Rekan kerja saya ingin menyimpan informasi kartu kredit (terenkripsi) dalam database MySQL. Mereka berencana untuk mengenkripsi nomor kartu kredit dengan ekstensi mcrypt PHP , mungkin menggunakan Rijndael/AES atau Twofish. Subjek manajemen kunci dibiasakan, tetapi dua opsi berikut disebutkan:

  1. menyimpan kunci dalam basis data, dengan kunci terpisah untuk setiap entri kartu kredit; atau

  2. menyimpan kunci enkripsi tunggal untuk semua entri kartu kredit dalam file PHP sebagai variabel (mirip dengan cara PHP aplikasi seperti WordPress dan kredensial basis data toko MediaWiki).

Bagaimana saya bisa meyakinkan mereka untuk tidak menggunakan rute ini? Kami akan menggunakan Authorize.net untuk pembayaran sedang memproses, jadi saya menyebutkan layanan Pelanggan Informasi Manajer mereka sebagai alternatif untuk menyimpan informasi kartu kredit sendiri. Namun, saya tidak tahu subjek cukup baik untuk membuat argumen yang meyakinkan (argumen saya adalah "tidak ada dari kita adalah pakar keamanan" dan "Saya tidak akan merasa nyaman dengan perusahaan yang menyimpan informasi kartu kredit saya dengan cara ini").

Jika saya tidak dapat meyakinkan mereka untuk menggunakan layanan pihak ke-3 seperti Manajer Informasi Pelanggan, apa yang harus saya simpan keberatan agar informasi kartu kredit pelanggan tetap aman? Secara khusus, bagaimana saya harus mengelola kunci enkripsi? Haruskah ada kunci enkripsi terpisah untuk setiap entri pelanggan? Di mana saya dapat menyimpan kunci sehingga saya dapat mendekripsi informasi kartu kredit sebelum mengirim transaksi ke Authorize.Net? Dua opsi yang disebutkan di atas tampaknya tidak terlalu masuk akal bagi saya (tapi sekali lagi, saya tidak tahu subjeknya dengan cukup baik untuk membuat argumen yang meyakinkan terhadap keduanya).


Pembaruan : Saya menemukan seseorang di perusahaan yang akrab dengan PCI DSS kepatuhan, jadi saya bekerja dengannya untuk membuat yakin ini dilakukan dengan benar. Namun, saya masih menghargai jawaban atas pertanyaan saya di atas (baik untuk meningkatkan pengetahuan saya dan untuk membantu orang lain dalam situasi yang sama).

Pembaruan 2 : Berhasil! Pengembang lain duduk dan membaca PCI DSS pedoman dan memutuskan bahwa itu adalah ide yang buruk untuk menyimpan informasi itu sendiri. Kami akan menggunakan Authorize.Net's Customer Information Manager layanan.

38
M8R-53mg86

Menyimpan nomor kartu berarti Anda harus mematuhi persyaratan PCI-DSS, atau Anda berisiko terkena denda dan pelanggaran kontrak akun pedagang Anda. PCI-DSS memiliki seperangkat persyaratan yang sangat besar - beberapa masuk akal, beberapa berat, beberapa kegunaan yang dipertanyakan - dan biaya untuk mematuhinya, dan menyatakan bahwa Anda telah mematuhinya, bisa sangat tinggi.

Unduh standar PCI-DSS 2. dan takut.

Secara khusus, tak satu pun dari pendekatan yang disarankan adalah PCI-DSS compliant. Kunci tidak boleh disimpan tanpa perlindungan atau di tempat yang sama dengan data pemegang kartu yang dilindungi.

Jika Anda harus menerapkan in-house ini, Anda perlu mengisolasi komponen yang menyentuh nomor kartu dari yang lainnya, sehingga PCI-DSS hanya berlaku untuk sejumlah sistem yang terbatas. Lihatlah solusi tokenisasi untuk membantu Anda menjaga paparan data pemegang kartu Anda seminimal mungkin. Jika Anda tidak melakukan ini dengan benar, Anda dapat dengan mudah menjatuhkan semua server Anda (atau bahkan semua desktop perusahaan Anda!) Ke dalam lingkup PCI, di mana kepatuhan pada titik menjadi sulit-mustahil.

Authorize.net menawarkan layanan penagihan berulang otomatis. Untuk cinta kewarasan, gunakan itu.

33
bobince

"Tidak ada di antara kita yang ahli dalam bidang keamanan" dan "Saya tidak akan merasa nyaman dengan perusahaan yang menyimpan informasi kartu kredit saya dengan cara ini" adalah argumen yang sepenuhnya valid. Dari perspektif teknis (berdasarkan kemampuan), mereka seharusnya untuk mengakhiri diskusi. Tetapi jika Anda berdebat dengan orang-orang yang bukan pakar keamanan, mereka mungkin tidak dalam posisi untuk mengakui argumen yang baik.

Jadi, jika Anda mendapati bahwa memperdebatkan tentang manfaat tidak membawa Anda ke mana pun, mundurlah The Sledgehammer of Compliance (apakah +20 kerusakan terhadap birokrat). Secara khusus, ingatkan mereka tentang PCI DSS. Tanyakan kepada mereka apakah mereka telah menghitung biaya pencapaian PCI DSS kepatuhan. Tanya mereka untuk analisis biaya-manfaat tentang berapa banyak pendapatan tambahan yang disediakan oleh fitur ini (biasanya, jawabannya adalah: 0 ) dan berapa biaya untuk bisnis akan (biasanya, jawabannya adalah: besar). Dalam kebanyakan situasi, itu akan berakhir.

Atau, setidaknya harus mengakhiri diskusi. Jika tidak, bicaralah dengan manajer Anda, karena ini pada akhirnya adalah keputusan bisnis, dan mereka harus segera mengenali panggilan yang tepat.

Dan jika manajer Anda tidak mendapatkannya - yah, yang bisa saya sarankan adalah: dapatkan manajer baru. Mungkin sudah waktunya untuk memperbarui resume Anda.

28
D.W.

Kedengarannya tidak seperti perusahaan Anda telah melalui PCI DSS penilaian di tempat sebelum atau bahkan mencoba menjawab semua pertanyaan di SAQ D. Untuk hampir setiap perusahaan yang memiliki, mereka sedang mencari cara untuk menghilangkan data pemegang kartu dan berharap itu tidak terlalu mahal bagi mereka untuk melakukannya.Jika Anda berada pada titik di mana itu belum mahal untuk mengimplementasikan solusi, Anda harus benar-benar menyimpan data Anda dengan Authorize.net atau pihak ke-3 lainnya.

Argumen terbaik yang dapat Anda buat untuk rekan kerja Anda adalah untuk menjelaskan seberapa besar kerumitan PCI dan berapa banyak kerumitan ini berkurang jika Anda tidak menyimpan data pemegang kartu sendiri. Menjaga kepatuhan PCI adalah pekerjaan penuh waktu. Jika Anda menyimpan data pemegang kartu, ada begitu banyak persyaratan yang harus Anda penuhi untuk menjaga kepatuhan (PCI DSS SAQ D dua kali lebih panjang dari SAQ C). Mengosongkan data adalah cara termudah untuk pergi. Jujur saya bahkan tidak akan mempertimbangkan menyimpan data sendiri.

7
freb

Kebanyakan Bos/Rekan Kerja tidak perlu memahami semua masalah 'teknis' yang mungkin Anda sampaikan.

Karena itu, Anda perlu mengatasinya di area yang dapat mereka pahami - biaya/uang.

Salah satu hal yang saya temukan berguna ketika menjelaskan ini adalah bahwa jika Anda diretas dan informasi kartu kredit dicuri mereka akan bertanggung jawab, tidak hanya untuk denda tetapi juga untuk biaya penerbitan kembali kartu kredit baru.

Misalnya: jika perusahaan Anda memiliki 100.000 nomor kartu kredit, biayanya satu juta dolar untuk mengganti kartu-kartu tersebut SEBELUM mereka membayar denda dll (oh dan omong-omong CFO dapat masuk penjara jika mereka tidak memenuhi PCI)

Sama seperti mereka memiliki asuransi untuk properti mereka

4
pzirkind