Edge computing met Cloudflare Workers en Deno · Les

Inputsanitisatie en injectiepreventie

Bescherm edgeapplicaties tegen XSS, SQL-injection en vergelijkbare aanvallen door invoer te sanitiseren en uitvoer correct te encoderen.

Les 4 van 413 stappen

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, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;')
    .replace(/'/g, '&#39;');
}

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 row

Valideer 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.

Gratis beginnen

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

  1. Authenticatie en autorisatie
  2. Snelheidsbeperking en DDoS-bescherming
  3. Veilig geheimen beheren
  4. Inputsanitisatie en injectiepreventie
← Terug naar Edge computing met Cloudflare Workers en Deno