Veilige programmeerpraktijken
Implementeer beveiligingsprincipes om veelvoorkomende kwetsbaarheden, zoals cross-site scripting (XSS) en datalekken, te voorkomen.
Veilige programmeerpraktijken is een gratis Browserextensies ontwikkelen (Chrome en Edge)-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Browserextensies ontwikkelen (Chrome en Edge). Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Browserextensies ontwikkelen (Chrome en Edge) bevat in totaal 4 lessen.
Waarom beveiliging belangrijk is voor extensies
Browserextensies werken met aanzienlijke bevoegdheden en hebben nauw contact met gebruikersgegevens en browsersessies. Daarom zijn veilige programmeerpraktijken absoluut noodzakelijk.
Slechte beveiliging kan leiden tot ernstige kwetsbaarheden, zoals Cross-Site Scripting (XSS) en gegevenslekken, waardoor de privacy van gebruikers en de integriteit van het systeem in gevaar komen.
XSS-kwetsbaarheden begrijpen
Cross-Site Scripting (XSS) treedt op wanneer een aanvaller schadelijke scripts injecteert in een vertrouwde webtoepassing, of in ons geval in de gebruikersinterface of contentscripts van je extensie.
Deze scripts kunnen gevoelige gegevens stelen, gebruikerssessies kapen of websites zelfs vervormen, allemaal binnen de context van de machtigingen van je extensie.
Het gevaar van `innerHTML`
Een van de meest voorkomende oorzaken van XSS in webontwikkeling, en dus ook in extensies, is het gebruik van innerHTML met niet-vertrouwde invoer.
Als je tekst rechtstreeks van een gebruiker overneemt (bijvoorbeeld uit een formulierveld, een URL-parameter of zelfs de inhoud van een webpagina) en deze met innerHTML in de DOM invoegt, worden alle ingesloten scripts uitgevoerd.
Veilige DOM-manipulatie: `textContent`
Gebruik bij het weergeven van niet-vertrouwde platte tekst altijd de eigenschap textContent in plaats van innerHTML om XSS te voorkomen.
textContent behandelt alle invoer als onbewerkte tekst, zodat HTML-tags en scripts niet door de browser worden geparseerd en uitgevoerd. Dit is je eerste verdedigingslinie.
`textContent` in de praktijk gebruiken
Probeer dit eenvoudige JavaScript-voorbeeld uit te voeren. Let erop hoe textContent het script veilig als platte tekst weergeeft, terwijl innerHTML zou proberen het uit te voeren, met gevaarlijke gevolgen.
const userInput = "<script>alert('XSS!');</script>";
// Simulate a DOM element
const divSafe = { textContent: '' };
const divUnsafe = { innerHTML: '' };
// Safe way: Using textContent
divSafe.textContent = userInput;
console.log("Safe (textContent):", divSafe.textContent);
// Unsafe way: Using innerHTML (DO NOT DO THIS!)
divUnsafe.innerHTML = userInput;
console.log("Unsafe (innerHTML):", divUnsafe.innerHTML);HTML opschonen wanneer dat nodig is
Wat als je echt enige HTML (zoals vet of cursief) uit gebruikersinvoer wilt toestaan? In die gevallen is textContent niet voldoende.
Je moet een robuuste, goed onderhouden bibliotheek voor het opschonen van HTML gebruiken (bijvoorbeeld DOMPurify). Deze bibliotheken parseren HTML, verwijderen schadelijke tags en attributen en leveren veilige HTML op. Schrijf nooit zelf een HTML-saneringsbibliotheek.
Dynamische code-uitvoering vermijden
Functies zoals eval(), new Function(), setTimeout(string) en setInterval(string) voeren JavaScript-code uit die in een tekenreeks staat.
Dit vormt een aanzienlijk beveiligingsrisico. Als een aanvaller de tekenreeks als argument kan beheren, kan die willekeurige code uitvoeren binnen de context van je extensie en mogelijk andere beveiligingsmaatregelen omzeilen.
Gegevenslekken voorkomen
Een gegevenslek treedt op wanneer gevoelige gebruikersgegevens onbedoeld of kwaadwillig worden blootgesteld aan onbevoegde derden. Dit is een belangrijk aandachtspunt voor extensies.
Wees uiterst voorzichtig wanneer je gegevens van je extensie naar externe servers verzendt. Controleer altijd de bestemming, gebruik beveiligde protocollen (HTTPS) en versleutel gevoelige informatie indien nodig.
Het principe van minimale bevoegdheden
Houd je bij het declareren van machtigingen in het manifest.json van je extensie altijd aan het principe van minimale bevoegdheden.
Vraag alleen de absoluut minimale machtigingen aan die nodig zijn voor de functionaliteit van je extensie. Te ruime machtigingen vergroten het aanvalsoppervlak en de kans op gegevenslekken als je extensie wordt gecompromitteerd.
Controle van aanbevolen beveiligingspraktijken
Welke van de volgende veilige programmeerpraktijken worden aanbevolen voor browserextensies?
Samenvatting: extensies veilig houden
Je hebt belangrijke veilige programmeerpraktijken geleerd voor het bouwen van robuuste browserextensies:
- Alle invoer opschonen: Gebruik
textContentvoor platte tekst en robuuste bibliotheken zoals DOMPurify voor HTML. - Dynamische code vermijden: Voer nooit code uit niet-vertrouwde tekenreeksen uit met functies zoals
eval(). - Minimale bevoegdheden: Vraag alleen de essentiële machtigingen aan die je extensie nodig heeft.
- Gegevenslekken voorkomen: Wees voorzichtig bij het verzenden van gebruikersgegevens en zorg voor veilige bestemmingen en protocollen.
Door deze praktijken toe te passen, bouw je betrouwbaardere extensies die de privacy en beveiliging van gebruikers beschermen.
Leer JavaScript met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “Veilige programmeerpraktijken” gratis?
Ja — de volledige tekst van “Veilige programmeerpraktijken” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Browserextensies ontwikkelen (Chrome en Edge) wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Browserextensies ontwikkelen (Chrome en Edge) bevat in totaal 4 lessen.
Wat leer ik in “Veilige programmeerpraktijken”?
Implementeer beveiligingsprincipes om veelvoorkomende kwetsbaarheden, zoals cross-site scripting (XSS) en datalekken, te voorkomen. Je oefent met Browserextensies ontwikkelen (Chrome en Edge) door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Browserextensies ontwikkelen (Chrome en Edge) te beginnen?
Ervaring vooraf is niet nodig. Browserextensies ontwikkelen (Chrome en Edge) op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Veilige programmeerpraktijken”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Browserextensies ontwikkelen (Chrome en Edge)?
Ja. Elke les over Browserextensies ontwikkelen (Chrome en Edge) bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Geavanceerde machtigingen begrijpen
- Veilige programmeerpraktijken
- Content Security Policy (CSP)
- Optionele machtigingen en aanvragen tijdens runtime