Jika anda pernah perlu menulis aplikasi untuk memproses pembayaran kad, tidak seperti mengintegrasikan PayPal, tetapi seperti menjadi PayPal.
Payment Card Industry Data Security Standard (PCI DSS) adalah standard keselamatan maklumat untuk organisasi yang menangani kad kredit jenama dari skim kad utama.
Payment Card Industry Data Security Standard (PCI DSS) adalah standard keselamatan maklumat untuk organisasi yang menangani kad kredit jenama dari skim kad utama.
Dengan kata lain, ia adalah senarai semulajadi yang berkata: "Hei, jika anda akan menyimpan atau memproses wang orang, mungkin jangan biarkan pangkalan data anda terbuka kepada dunia."
Why Am I Even Writing This?
Mengapa saya bahkan menulis ini?Selepas bekerja pada aplikasi yang mematuhi PCI DSS, saya mempunyai sedikit krisis eksistensial dan bertanya kepada diri saya, "Mengapa tidak semua aplikasi harus mengikuti amalan pengkodean selamat PCI DSS?"
Percayalah kepada saya, PCI DSS tidak begitu menakutkan seperti yang terdengar. Kepatuhan dan privasi orang mempunyai cara untuk membuat setiap proses mudah terdengar besar untuk berasa baik tentang diri mereka sendiri. Ingin mempunyai hari yang menegangkan? Dengarkan mereka bercakap tentang PIA, DPIA, DSAR, atau ROPA.
Bukan untuk menyederhanakan perkara-perkara, pematuhan boleh menyakitkan.Tetapi jika ia membantu melindungi data anda dan mengelakkan anda daripada berakhir pada "Saya telah dipukul". bukankah ia bernilai?
Tips untuk mengekalkan kod
Jika anda membina sistem pembayaran atau hanya cuba untuk tidur lebih baik pada malam hari, di sini adalah beberapa cara mudah untuk mengamankan kod yang akan membawa anda lebih dekat kepada pematuhan PCI DSS.
Subnets, NAT Gateways, and the Drama of Networking
Jika pangkalan data aplikasi anda berada dalam subnet awam, saya akan memerlukan anda untuk berhenti membaca dan membetulkannya.
Pastikan anda menggunakan subnet swasta untuk apa-apa yang sensitif, kemudian laluan lalu lintas mereka melalui NAT Gateway supaya mereka boleh mencapai internet (untuk patch, kemas kini, memes, dan lain-lain) tanpa terdedah secara langsung.Pikirkan ia sebagai memberikan aplikasi anda VPN untuk mengakses dunia, tetapi memberitahu ia untuk tidak bercakap dengan orang asing.
Bagi pecinta "The Matrix", dunia Matrix adalah subnet peribadi, dunia sebenar adalah subnet awam, dan telefon selamat yang Neo dan rakan-rakan beliau gunakan untuk melakukan perjalanan antara dunia adalah NAT Gateway.
Saya suka cerita ini, saya harap awak juga.Itu mengambil masa yang lama.
Encrypt All the Things
Anda telah mendengar ini sebelum ini.Anda akan mendengarnya lagi.
- Encrypt dalam rehat.
- Salinan dalam transit.
- Mengenkripsi log, cadangan, dan juga variabel persekitaran jika anda berasa pedas.
Untuk perkhidmatan awan, menguruskan enkripsi mudah. anda hanya perlu mengaktifkan mereka.
Dan sila, Base64 bukan enkripsi. Ia adalah untuk orang-orang yang berbohong kepada diri mereka sendiri. anda tahu siapa anda. Tentu, ia mempunyai kegunaan, tetapi keselamatan bukan salah satu daripada mereka.
Security Headers
Tajuk keselamatan adalah tajuk respons HTTP yang mengarahkan pelayar bagaimana untuk menangani aspek yang berkaitan dengan keselamatan laman web. Mereka membantu anda mengelakkan serangan seperti Cross-Site Scripting (XSS), klikjacking, dan serangan man-in-the-middle. Set It and Forget It
Sekurang-kurangnya anda boleh menambah:
- Keselamatan pengangkutan yang ketat
- X-Content-Type Pilihan
- Kebijakan keselamatan kandungan
- Pilihan X-Frame
Mereka mudah dikonfigurasikan dalam kebanyakan kerangka kerja dan perkhidmatan awan.Lakukan sekali, dan anda sudah lebih baik daripada kebanyakan.
Firewalls? Definitely Firewalls
Mengarahkan permintaan awam ke aplikasi anda melalui tembok api.Ini seperti meletakkan bouncer di hadapan aplikasi anda.
Berbeza dengan hari-hari boomers, di mana mengkonfigurasi firewall adalah seperti mengumpulkan perabot anda dengan arahan dari Asgard. anda boleh mendapatkannya berfungsi, tetapi dengan apa kos? aplikasi hari ini menjadikan proses ini lebih mudah. Lebih baik jika anda berada di awan.
Perkhidmatan awan seperti AWS WAF dan Azure Firewall sudah dilengkapi dengan peraturan pra-konfigurasi untuk ancaman biasa; anda hanya perlu menyalakan mereka, dan mereka bekerja.
Firewall dengan usaha minimum akan membantu anda menghentikan corak serangan yang diketahui, menapis IP yang buruk, dan menghalang orang yang masih cuba suntikan SQL daripada 2008.
Access Control
Aplikasi anda bukan perpustakaan awam.Jangan berikan setiap perkhidmatan akses penuh kepada segala-galanya hanya kerana ia lebih mudah.Anda bukan Oprah Winfrey: “Anda mendapat admin!Anda mendapat admin!Semua orang mendapat admin!”
Mengikuti "Prinsip keistimewaan terkecil", yang bermaksud setiap pengguna mendapat hanya apa yang mereka perlukan.
Cuba untuk memutar pengesahan dan kunci secara teratur dan menggunakan peranan di atas kunci statik apabila mungkin.
Staging Is Not Production
Persekitaran pertunjukan anda harus mencerminkan pengeluaran dalam struktur, bukan dalam rahsia.
- Penyerang tidak peduli di mana mereka mendapatkan data dari.
- Jangan menyalin rahsia pengeluaran ke dalam panggung.
- Melaksanakan pengawasan dan peraturan WAF di sini juga.
Hacker suka persekitaran penampilan dengan kurang amaran. mana tempat yang lebih baik untuk menguji skrip mereka?
Change Management
PCI DSS memerlukan anda untuk mempunyai prosedur untuk menjejaki perubahan dalam kod, infrastruktur, dan dasar keselamatan.
Dalam istilah mudah, gunakan Git, gunakan Infrastructure-as-code (Serverless Framework, Terraform, AWS CDK, dan lain-lain), dan tetapkan amaran.
Logging Saves Lives
Log adalah penting. anda berharap untuk tidak pernah membutuhkannya, tetapi jika anda melakukannya, anda benar-benar membutuhkannya.
- Log aplikasi: Log kesilapan daripada aplikasi dan maklumat penting lain untuk membantu anda memulihkan.
- Log akses: Log siapa yang melakukan apa dan bila.
- Log pangkalan data: Menangkap pertanyaan lambat, corak akses yang pelik, dan pelanggaran yang berpotensi.
- Log audit: Log perubahan keizinan, peraturan tembok api, dan penyebaran kod. Alat-alat seperti AWS CloudTrail, GuardDuty, dan Config boleh membantu anda dengan ini.
Prefer ORMs
Ini adalah barisan pertahanan pertama anda (dan kesejahteraan). Lupakan SQL mentah kecuali jika anda seorang penyihir pangkalan data dengan keinginan mati. Gunakan ORM. Ya, anda boleh parameterisasi SQL mentah anda dan meningkatkan keselamatan; Walau bagaimanapun, masih terdapat peluang besar bahawa masa depan anda atau rakan sekerja anda akan lupa untuk parameterisasi pertanyaan dengan betul, dan seperti itu, anda telah dimasak.
ORM abstrak interaksi pangkalan data anda, menjadikannya lebih mudah untuk mengekalkan kod dan kurang terdedah kepada serangan suntikan.DROP TABLE users;
Pada malam yang penuh komitmen.
In Conclusion
Dalam kesimpulanIni adalah senarai yang panjang, tetapi saya yakin ia dipenuhi dengan perkara-perkara yang anda sudah lakukan.
Kepatuhan adalah menjengkelkan, tetapi juga merupakan pelanggaran data. PCI DSS mungkin berasa seperti senarai besar "Tidak, anda tidak boleh" tetapi ia hanya cuba untuk menjaga anda dan pelanggan anda selamat. Pada platform awan seperti AWS, Azure, dan GCP, tiada alasan untuk tidak mengikuti amalan terbaik ini.
Tetap selamat. Tetap mematuhi. Dan untuk kegemaran semua yang baik, jangan simpan nombor kad yang tidak disulitkan dalam lajur pangkalan data yang dipanggilcard_number
.