𝗜 𝗔𝘂𝗱𝗶𝘁𝗲𝗱 𝗠𝘆 𝗦𝗶𝗱𝗲 𝗣𝗿𝗼𝗷𝗲𝗰𝘁𝘀 𝗳𝗼𝗿 𝗦𝗲𝗰𝘂𝗿𝗶𝘁𝘆 — 𝗛𝗲𝗿𝗲 𝗜𝘀 𝗪𝗵𝗮𝘁 𝗜 𝗙𝗼𝘂𝗻𝗱

Baru-baru ini, saya telah mengaudit semua projek sampingan saya. Saya memeriksa backend FastAPI, bot Telegram, dan aplikasi web saya. Saya fikir saya sudah berhati-hati.

Saya silap.

Saya menemui pepijat (bugs) sebenar yang telah saya lancarkan ke produksi. Ini bukan masalah teori. Ia adalah kesilapan yang saya lakukan semasa cuba bergerak pantas.

Berikut adalah isu-isu utama yang saya temui dan cara untuk memperbaikinya:

  1. Pengesahan Bersyarat (Conditional Authentication) Saya menulis kod yang hanya menyemak kunci API jika rahsia (secret) wujud. Jika saya terlupa menetapkan rahsia tersebut dalam persekitaran (environment) saya, semakan tersebut akan dilangkau sepenuhnya. Ini menyebabkan API saya terbuka kepada sesiapa sahaja.
  1. Kebocoran Kunci dalam Sejarah Git Saya menemui kunci API lama dalam sejarah Git saya. Saya telah memindahkannya ke fail .env kemudian, tetapi Git menyimpan setiap versi lama kod anda selamanya.
  1. Endpoint Debug yang Tertinggal Saya meninggalkan endpoint dalam produksi yang memaparkan konfigurasi pangkalan data dan tetapan sistem saya. Ini berguna semasa pembangunan tetapi berbahaya apabila aplikasi telah dilancarkan.
  1. Mesej Ralat yang Terlalu Terperinci (Verbose) Saya memulangkan ralat sistem mentah kepada pengguna. Ralat ini mendedahkan laluan fail, jenis pangkalan data, dan versi perpustakaan (library) anda. Penyerang boleh menggunakan data ini untuk menyasarkan sistem anda.
  1. XSS melalui innerHTML Saya menggunakan innerHTML untuk memaparkan data pengguna dalam frontend saya. Ini membolehkan penyerang menyuntik skrip ke dalam laman web anda.
  1. Ketiadaan Had Kadar (Rate Limiting) Saya mempunyai endpoint yang memanggil model AI yang mahal tanpa had. Seorang pengguna boleh menyebabkan bil yang sangat besar dalam masa beberapa minit sahaja.
  1. Tetapan CORS yang Terlalu Terbuka Saya menggunakan allow_origins=["*"] dalam middleware saya. Ini membolehkan mana-mana laman web membuat permintaan ke API anda.
  1. File Leakage I wrote code that created temporary files but failed to delete them if the process crashed. These files stay on your server forever.

Security issues are rarely intentional. They are the result of saying "I will fix this later." Later never comes.

Build security into your workflow from day one. Check your code before you commit and before you deploy.

Source: https://dev.to/justjinoit/i-audited-my-own-side-projects-for-security-issues-heres-what-i-found-1ahb