Hopp til innhold
Skaarberg Digital
Tilbake til blogg
·6 min lesing·
GDPRPersonvernStackPatrol

GDPR for utviklere: det praktiske

Hva det faktisk betyr å bygge GDPR-riktig: tredjeparts-skanning, consent, EU-hosting og de vanligste feilene norske nettsider gjør.


GDPR er 99 artikler og en haug med tolkninger. Her er det du som utvikler faktisk trenger å vite – praktisk, uten juristspråk.

Den viktigste setningen i GDPR

"Den registrerte har rett til å vite hva data brukes til, og å trekke tilbake samtykke."

Alt annet er i grunn konsekvenser av dette. Hvis du forstår det, forstår du GDPR.

Hva tredjeparter egentlig betyr

Hver gang du embedder en Google Font, legger til Google Analytics eller bruker en Intercom-chat, sender du brukerens IP-adresse og nettleserfingeravtrykk til et selskap utenfor EU. Det er en dataoverføring, og den krever enten:

  • Eksplisitt samtykke (et skikkelig cookie-banner, ikke en falsk en)
  • Berettiget interesse (veldig smalt juridisk begrep – misbrukes mye)
  • Overføringsgrunnlag som Standard Contractual Clauses

Her er typiske syndere vi finner med StackPatrol:

TjenesteProblemEU-alternativ
Google AnalyticsUS-data, fingerprintingPlausible, Umami
Google Fonts (CDN)IP sendes til GoogleLast ned fonter lokalt
IntercomUS-data, mye trackingCrisp (EU-hosting mulig)
HotjarSession recording, USPostHog (self-host)
CloudflareUS-eeidHetzner + Nginx

Hva du bør gjøre i dag

1. Last ned fontene dine

/* Ikke dette */
@import url('https://fonts.googleapis.com/css2?family=Inter');
 
/* Gjør dette – last ned og server lokalt */
@font-face {
  font-family: 'Inter';
  src: url('/fonts/inter.woff2') format('woff2');
  font-display: swap;
}

2. Bytt til personvernvennlig analyse

// Plausible – 1 linje, ingen cookies, GDPR-safe
<Script
  defer
  data-domain="dittdomene.no"
  src="https://plausible.io/js/script.js"
/>

Plausible sender ikke IP til tredjeparter, lagrer ingenting på brukerens enhet, og har servere i EU.

3. Bytt ut Google reCAPTCHA

// Honeypot i stedet for reCAPTCHA – null tracking
<input
  type="text"
  name="company_website"
  tabIndex={-1}
  autoComplete="off"
  aria-hidden="true"
  className="absolute left-[-9999px] h-0 w-0 opacity-0"
/>
 
// Server-side: kast meldingen hvis feltet er fylt ut
if (formData.company_website) return { status: "success" }; // stille drop

4. Sett sikkerheitsheadere

// next.config.ts
async headers() {
  return [{
    source: "/(.*)",
    headers: [
      { key: "X-Content-Type-Options", value: "nosniff" },
      { key: "X-Frame-Options", value: "DENY" },
      { key: "Referrer-Policy", value: "strict-origin-when-cross-origin" },
    ],
  }];
}

Et "aksepter alle"-banner med grønne knapper og grå "avvis"-tekst er ikke lovlig samtykke. Datatilsynet er klare på dette.

Et lovlig banner:

  • Viser tydelig hva som lastes (og fra hvilke land)
  • Har like tydelige "Aksepter" og "Avvis"-valg
  • Husker avslaget på samme måte som akseptet
  • Laster ingen tredjeparts skript før samtykke er gitt

Det enkleste alternativet: ikke last noe som krever samtykke. Bruk Plausible i stedet for GA, last fonter lokalt, og du trenger ikke et cookie-banner i det hele tatt.

Sjekk din egen side

StackPatrol er et gratis verktøy vi har bygget nettopp for dette – skriv inn domenet ditt og se nøyaktig hvilke tredjeparter som lastes, fra hvilke land, og om det finnes EU-alternativer.

Det tar 30 sekunder og er helt gratis.

Nysgjerrig på et prosjekt?

Vil du diskutere noe fra artikkelen, eller har du et prosjekt du vil bygge?

Ta kontakt