𝗜𝗰 𝗵𝗮𝗯 𝗺𝗲𝗶𝗻𝗲 𝘀𝗶𝗱𝗲 𝗽𝗿𝗼𝗷𝗲𝗰𝘁𝘀 𝗴𝗲𝗮𝘂𝗱𝗶𝘁 𝗼𝗻 𝘀𝗲𝗰𝘂𝗿𝗶𝘁𝘆 — 𝗱𝗶𝗲 𝗵𝗶𝗲𝗿 𝗶𝘀 𝘄𝗮𝘁 𝗶𝗸 𝗵𝗲𝗯 𝗴𝗲𝘃𝗼𝗻𝗱𝗲𝗻

Onlangs heb ik al mijn side projects geaudit. Ik heb mijn FastAPI backends, Telegram bots en web apps gecontroleerd. Ik dacht dat ik voorzichtig was.

Ik had het mis.

Ik heb echte bugs gevonden die ik daadwerkelijk naar productie heb gepusht. Dit zijn geen theoretische problemen. Het zijn fouten die ik heb gemaakt terwijl ik probeerde snel te werken.

Hier zijn de belangrijkste problemen die ik heb gevonden en hoe je ze kunt oplossen:

  1. Conditionele authenticatie Ik schreef code die API-keys alleen controleerde als er een secret aanwezig was. Als ik vergat de secret in mijn omgeving in te stellen, werd de controle volledig overgeslagen. Hierdoor bleef mijn API open voor iedereen.
  1. Lekkende keys in de Git-geschiedenis Ik vond oude API-keys in mijn Git-geschiedenis. Ik had ze later verplaatst naar .env-bestanden, maar Git bewaart elke oude versie van je code voor altijd.
  1. Overgebleven debug-endpoints Ik liet endpoints in productie staan die mijn databaseconfiguratie en systeeminstellingen toonden. Deze zijn handig tijdens de ontwikkeling, maar gevaarlijk in de echte wereld.
  1. Te gedetailleerde foutmeldingen Ik gaf ruwe systeemfouten terug aan de gebruiker. Deze fouten onthullen je bestandspaden, databasetypes en bibliotheekversies. Een aanvaller kan deze gegevens gebruiken om je systeem aan te vallen.
  1. XSS via innerHTML Ik gebruikte innerHTML om gebruikersgegevens in mijn frontend te renderen. Dit stelt aanvallers in staat om scripts in je site te injecteren.
  1. Gebrek aan rate limiting Ik had endpoints die zonder limieten dure AI-modellen aanriepen. Eén gebruiker kon in enkele minuten een enorme rekening veroorzaken.
  1. Te ruime CORS-instellingen Ik gebruikte allow_origins=["*"] in mijn middleware. Dit staat elke website toe om verzoeken naar je API te doen.
  1. File Leakage Ik schreef code die tijdelijke bestanden aanmaakte, maar deze niet verwijderde als het proces crashte. Deze bestanden blijven voor altijd op je server staan.

Beveiligingsproblemen zijn zelden opzettelijk. Ze zijn het resultaat van zeggen: "Dit fix ik later." Dat "later" komt nooit.

Integreer beveiliging vanaf dag één in je workflow. Controleer je code voordat je commit en voordat je deployt.

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