paint-brush
Kod Bau 282 - Lalai Buruk dan Cara Membaikinyaoleh@mcsee
679 bacaan
679 bacaan

Kod Bau 282 - Lalai Buruk dan Cara Membaikinya

oleh Maximiliano Contieri4m2024/12/02
Read on Terminal Reader

Terlalu panjang; Untuk membaca

Anggap respons yang tidak diketahui sebagai tidak dibenarkan, tidak sah.
featured image - Kod Bau 282 - Lalai Buruk dan Cara Membaikinya
Maximiliano Contieri HackerNoon profile picture

Lalai Boleh Menenggelamkan Anda

TL;DR: Anggap respons yang tidak diketahui sebagai tidak dibenarkan, tidak sah.

Masalah

  • Risiko keselamatan
  • Mengabaikan kes yang tidak diketahui
  • Ralat Salah Tafsiran
  • Lalai kepada keadaan yang sah
  • Keizinan Tidak Padan
  • Gagal mencatat peristiwa
  • Potensi Eksploitasi

Penyelesaian

  1. Sahkan semua respons terhadap set tertutup kod yang diketahui.
  2. Lalai (dan tidak diketahui) kepada yang tidak dibenarkan atau Alih Keluar Lalai .
  3. Log setiap kes yang tidak sepadan atau tidak dijangka untuk analisis.
  4. Uji dengan senario kelebihan.
  5. Segerakkan kumpulan tindak balas dengan pemproses dengan kerap untuk mengelakkan kod lapuk.
  6. Fokus pada keselamatan menjadikannya proses anjakan ke kiri.
  7. Reka bentuk sistem dengan daya tahan perubahan untuk mengendalikan senario yang berkembang.

Konteks

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.

Kod Contoh

salah

 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; }

Betul

 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; }

Pengesanan

  • [x] Manual

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.

Tag

  • Keselamatan

Tahap

  • [x] Pertengahan

Mengapa Bijection Penting

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.

Penjanaan AI

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."

Pengesanan AI

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.

Cuba Mereka!

Ingat: AI Assistants melakukan banyak kesilapan

Tanpa Arahan Yang Betul

Dengan Arahan Tertentu

SembangGPT

SembangGPT

Claude

Claude

Kebingungan

Kebingungan

Copilot

Copilot

Gemini

Gemini

Kesimpulan

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.

perhubungan

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

Penafian

Bau Kod adalah pendapat saya.

Kredit

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.

Cara Mencari Bahagian Busuk Kod anda

L O A D I N G
. . . comments & more!

About Author

Maximiliano Contieri HackerNoon profile picture
Maximiliano Contieri@mcsee
I’m a sr software engineer specialized in Clean Code, Design and TDD Book "Clean Code Cookbook" 500+ articles written

GANTUNG TANDA

ARTIKEL INI DIBENTANGKAN DALAM...