Inputsanitisatie en injectiepreventie
Bescherm edgeapplicaties tegen XSS, SQL-injection en vergelijkbare aanvallen door invoer te sanitiseren en uitvoer correct te encoderen.
Inputsanitisatie en injectiepreventie is een gratis Edge computing met Cloudflare Workers en Deno-les op CoddyKit. Dit is les 4 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 Edge computing met Cloudflare Workers en Deno. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Edge computing met Cloudflare Workers en Deno bevat in totaal 4 lessen.
Waarom sanitisatie belangrijk is
Ook aan de edge vormt niet-vertrouwde invoer de bron van de meeste aanvallen. Sanitisatie en de juiste uitvoercodering voorkomen:
- Cross-Site Scripting (XSS)
- SQL- of query-injectie
- Header- en loginjectie
Validatie controleert de vorm; sanitisatie maakt invoer veilig om te gebruiken.
XSS begrijpen
XSS treedt op wanneer door een aanvaller beheerde gegevens als HTML worden weergegeven en als script worden uitgevoerd.
Als een Worker gebruikersinvoer zonder codering terugstuurt naar een pagina, kan een aanvaller scripts injecteren.
// Dangerous: user input goes straight into HTML
const html = '<div>' + userInput + '</div>';Uitvoercodering voor HTML
De oplossing voor XSS is contextbewuste uitvoercodering. Codeer speciale HTML-tekens voordat je ze weergeeft.
function escapeHtml(s) {
return s
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}SQL-injectie voorkomen
Bouw SQL nooit op door tekenreeksen samen te voegen. Gebruik geparametriseerde query's; de D1- en Deno-stuurprogramma's binden waarden veilig.
// Safe: bound parameter, never concatenated
const { results } = await env.DB
.prepare('SELECT * FROM users WHERE email = ?')
.bind(email)
.all();Het gevaar van samenvoegen
Samengevoegde SQL geeft een aanvaller de mogelijkheid om uit de bedoelde query te breken.
// NEVER do this
const sql = "SELECT * FROM users WHERE email = '" + email + "'";
// email = "' OR '1'='1" returns every rowValideer en sanitizeer daarna
Combineer beide verdedigingslagen: valideer dat de invoer overeenkomt met een verwacht patroon en sanitizeer deze daarna voor de context waarin je hem gebruikt.
const emailRe = /^[^@\s]+@[^@\s]+\.[^@\s]+$/;
if (!emailRe.test(email)) {
return new Response('Invalid email', { status: 400 });
}Injectie in headers en omleidingen
Gebruikersinvoer in antwoordheaders of URL's voor omleidingen kan nieuwe regels injecteren of open omleidingen veroorzaken.
- Verwijder CR/LF uit headerwaarden
- Sta alleen omleidingsdoelen uit een allowlist toe
const clean = value.replace(/[\r\n]/g, '');
headers.set('X-User-Tag', clean);Content Security Policy
Een CSP-header is een sterke tweede verdedigingslaag tegen XSS: deze beperkt welke scripts mogen worden uitgevoerd.
headers.set(
'Content-Security-Policy',
"default-src 'self'; script-src 'self'"
);Rijke HTML sanitiseren
Wanneer je HTML moet accepteren, bijvoorbeeld gebruikersreacties, gebruik je een gecontroleerde sanitizerbibliotheek in plaats van reguliere expressies. Sta alleen veilige tags en attributen toe.
import DOMPurify from 'isomorphic-dompurify';
const safe = DOMPurify.sanitize(userHtml);Gelaagde beveiliging
Geen enkele beveiligingsmaatregel is voldoende. Stapel verdedigingslagen:
- Valideer de vorm van de invoer
- Gebruik geparametriseerde query's
- Codeer uitvoer volgens de context
- Stel CSP- en beveiligingsheaders in
Als één laag faalt, beschermen de andere je nog steeds.
Samenvatting van best practices
Houd edge-apps veilig:
- Behandel alle invoer als onbetrouwbaar
- Voeg nooit SQL of HTML samen met onbewerkte invoer
- Codeer voor precies de context van de uitvoer
- Voeg CSP toe en verwijder besturingstekens uit headers
Korte controle
Wat is de betrouwbaarste manier om SQL-injectie in een D1-query te voorkomen?
Samenvatting
Je hebt je app beschermd tegen injectie:
- Codeer uitvoer om XSS te stoppen
- Gebruik geparametriseerde query's om SQL-injectie te stoppen
- Verwijder besturingstekens en gebruik een allowlist voor omleidingen
- Voeg CSP toe en sanitizeer rijke HTML met een vertrouwde bibliotheek
Gelaagde beveiliging houdt edge-applicaties robuust, zelfs wanneer één laag tekortschiet.
Leer Edge computing met Cloudflare Workers en Deno 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
- 47
Veelgestelde vragen
Is de les “Inputsanitisatie en injectiepreventie” gratis?
Ja — de volledige tekst van “Inputsanitisatie en injectiepreventie” 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 Edge computing met Cloudflare Workers en Deno wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Edge computing met Cloudflare Workers en Deno bevat in totaal 4 lessen.
Wat leer ik in “Inputsanitisatie en injectiepreventie”?
Bescherm edgeapplicaties tegen XSS, SQL-injection en vergelijkbare aanvallen door invoer te sanitiseren en uitvoer correct te encoderen. Je oefent met Edge computing met Cloudflare Workers en Deno 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 Edge computing met Cloudflare Workers en Deno te beginnen?
Ervaring vooraf is niet nodig. Edge computing met Cloudflare Workers en Deno 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 4 van 4.
Hoe lang duurt de les “Inputsanitisatie en injectiepreventie”?
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 Edge computing met Cloudflare Workers en Deno?
Ja. Elke les over Edge computing met Cloudflare Workers en Deno 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
- Authenticatie en autorisatie
- Snelheidsbeperking en DDoS-bescherming
- Veilig geheimen beheren
- Inputsanitisatie en injectiepreventie