𝗡𝗶𝗹𝗶𝗶𝗳𝗮𝗻𝘆𝗶𝗮 𝗨𝗸𝗮𝗴𝘂𝘇𝗶 𝗠𝗶𝗿𝗮𝗱𝗶 𝗬𝗮𝗻𝗴𝘂 𝘆𝗮 𝗭𝗶𝗮𝗱𝗮 𝗸𝘄𝗮 𝗮𝗷𝗶𝗹𝗶 𝘆𝗮 𝗨𝘀𝗮𝗹𝗮𝗺𝗮 — 𝗛𝗮𝗽𝗮 𝗡𝗶𝗺𝗲𝗴𝘂𝗻𝗱𝘂𝗮 𝗡𝗶𝗻𝗶

Hivi karibuni niliifanyia ukaguzi miradi yangu yote ya ziada. Nilikagua mifumo yangu ya FastAPI backends, Telegram bots, na web apps. Nilidhani nilikuwa mwangalifu.

Nilikuwa nimekosea.

Niligundua hitilafu (bugs) halisi ambazo nilizituma kwenye uzalishaji (production). Hizi siyo matatizo ya kinadharia tu. Ni makosa niliyofanya wakati nikijaribu kufanya kazi kwa kasi.

Hapa kuna masuala makuu niliyoyapata na jinsi ya kuyarekebisha:

  1. Uthibitishaji wa Masharti (Conditional Authentication) Niliandika kodi ambayo ilikagua API keys tu ikiwa siri (secret) ilikuwepo. Ikiwa nilisahau kuweka siri hiyo kwenye mazingira yangu (environment), ukaguzi ulirukwa kabisa. Hii iliacha API yangu wazi kwa kila mtu.
  1. Kuvuja kwa Funguo (Keys) kwenye Historia ya Git Nilipata API keys za zamani kwenye historia yangu ya Git. Nilikuwa nimezihamishia kwenye faili za .env baadaye, lakini Git huhifadhi kila toleo la zamani la kodi yako milele.
  1. Miisho (Endpoints) ya Debug Iliyobaki Niliacha endpoints kwenye uzalishaji (production) ambazo zilionesha usanidi wa hifadhidata (database configuration) na mipangilio ya mfumo. Hizi ni muhimu wakati wa maendeleo (development) lakini ni hatari ukiwa hewani.
  1. Ujumbe wa Makosa wenye Maelezo Mengi (Verbose Error Messages) Nilikuwa nikirudisha makosa ghafi ya mfumo (raw system errors) kwa mtumiaji. Makosa haya hufichua njia za faili (file paths), aina za hifadhidata, na matoleo ya maktaba (library versions). Mshambuliaji anaweza kutumia data hii kushambulia mfumo wako.
  1. XSS kupitia innerHTML Nilitumia innerHTML kuonyesha data ya mtumiaji kwenye upande wa mbele (frontend). Hii inaruhusu washambuliaji kuingiza skripti (scripts) kwenye tovuti yako.
  1. Ukosefu wa Udhibiti wa Kasi (Rate Limiting) Nilikuwa na endpoints ambazo zilikuwa zinaita mifano ya AI ya gharama kubwa bila mipaka. Mtumiaji mmoja angeweza kusababisha bili kubwa ndani ya dakika chache.
  1. Mipangilio ya CORS yenye Ruhusa Kubwa (Permissive CORS Settings) Nilitumia allow_origins=["*"] kwenye middleware yangu. Hii inaruhusu tovuti yoyote kufanya maombi (requests) kwenye API yako.
  1. Kuvuja kwa Faili Niliandika kodi iliyounda faili za muda lakini ikashindwa kuzifuta ikiwa mchakato ulikwama. Faili hizi hubaki kwenye seva yako milele.

Masuala ya usalama mara chache huwa ya makusudi. Ni matokeo ya kusema "Nitarekebisha hili baadaye." Baadaye haiji kamwe.

Jenga usalama katika mtiririko wako wa kazi tangu siku ya kwanza. Kagua kodi yako kabla ya kuifanya commit na kabla ya kuidishia (deploy).

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