Lalai Boleh Menenggelamkan Anda
TL;DR: Anggap respons yang tidak diketahui sebagai tidak dibenarkan, tidak sah.
Hari ini adalah hari keselamatan komputer dan setiap pengaturcara perlu mengakui tanggungjawabnya.
Bayangkan aplikasi yang mengendalikan jualan yang bergantung pada kumpulan tindak balas daripada pemproses kad kredit untuk mengendalikan transaksi.
Setiap pemproses kad kredit menyediakan kod respons yang dipratentukan untuk pelbagai situasi, seperti baki tidak mencukupi atau kad tamat tempoh.
Isu ini bermula apabila pemproses menambah kod respons baharu untuk transaksi yang ditolak tetapi tidak memberitahu platform.
Aplikasi tidak mengenali kod baharu, lalai menganggapnya sebagai "tidak ditemui" dan membenarkan pembelian.
Pengguna menyedari kelemahan ini dan mengeksploitasinya untuk membuat pembelian tanpa kebenaran.
Pendapatan platform menjunam, membawa kepada muflis.
String response = paymentProcessor.authorize(cardDetails); switch (response) { case "DECLINED_INSUFFICIENT_FUNDS": // Handle insufficient funds break; case "DECLINED_EXPIRED_CARD": // Handle expired card break; default: // Authorize purchase break; }
String response = paymentProcessor.authorize(cardDetails); switch (response) { case "APPROVED": // Authorize purchase break; case "DECLINED_INSUFFICIENT_FUNDS": // Handle insufficient funds break; case "DECLINED_EXPIRED_CARD": // Handle expired card break; case "DECLINED_NEW_REASON": // Handle new declined reason break; default: // Reject purchase (default case for unknown responses) break; }
Anda boleh mengesan bau ini dengan menyemak logik pengendalian ralat.
Semak sama ada sistem log dan menafikan kes yang tidak diiktiraf.
Ujian automatik boleh membantu mengenal pasti sama ada input baharu atau tidak dijangka lalai kepada tindakan yang sah.
Alat analisis statik boleh membantu dengan membenderakan pengendalian ralat yang mungkin tidak lengkap.
Adalah penting untuk mengekalkan surat-menyurat satu dengan satu antara perwakilan dalaman aplikasi anda bagi respons pemproses pembayaran dan kod sebenar yang dikembalikan oleh pemproses.
Apabila anda memecahkan Bijection , anda mencipta ketidakpadanan.
Aplikasi ini mentafsir kod yang tidak diketahui dengan salah, membawa kepada tingkah laku yang tidak dijangka, lubang keselamatan dan akibat perniagaan yang berpotensi membawa bencana.
Alat AI boleh mencipta bau ini jika anda tidak menyatakan cara mengendalikan kes yang tidak diketahui.
Sebagai contoh, pengendalian ralat generik mungkin lalai kepada hasil yang jinak seperti "tidak dijumpai" atau "berjaya."
Penjana AI boleh membetulkan bau ini apabila anda mengarahkan mereka untuk menganggap kes yang tidak diketahui sebagai tidak dibenarkan dan menekankan pembalakan dan menguji senario yang tidak dijangka.
Ingat: AI Assistants melakukan banyak kesilapan
Tanpa Arahan Yang Betul | Dengan Arahan Tertentu |
---|---|
Sentiasa mengendalikan kes yang tidak diketahui dengan berhati-hati.
Lalai seperti "tidak ditemui" boleh membawa kepada isu keselamatan yang teruk dan kerugian kewangan.
Jadikan pengelogan dan penolakan respons yang tidak diketahui sebagai sebahagian daripada amalan pembangunan anda.
Buat keputusan anjakan ke kiri yang berkaitan dengan keselamatan semasa pengaturcaraan.
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxii
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-viii-8mn3352
Bau Kod adalah pendapat saya.
Foto oleh Nathana Rebouças di Unsplash
https://www.youtube.com/watch?v=J2QOejhA6ek
Andaian adalah ibu kepada semua kegagalan.
Kata Ouissal
Petikan Hebat Kejuruteraan Perisian
Artikel ini adalah sebahagian daripada Siri CodeSmell.