Naar de inhoud
websitecontrole.nl
Advies

Beveiliging afstemmen op Astro

Waar je op Astro de headers zet hangt af van je output. Een server-gerenderde (SSR) site kan ze in middleware zetten; een statische build serveert geen headers vanuit Astro, dus dan horen ze op de host. Hieronder per bevinding waar de fix woont.

Response-headers (HSTS, clickjacking, MIME-sniffing, referrer, permissions)

Draai je met een adapter (SSR), dan zet je ze in src/middleware, waar je de response na next() aanpast. Bij een statische build zet je ze in de header-config van je host (een _headers-bestand op Netlify of Cloudflare Pages, of vercel.json), want een statische pagina kent geen server om ze uit te sturen.

src/middleware.ts (SSR)
import { defineMiddleware } from 'astro:middleware';

export const onRequest = defineMiddleware(async (context, next) => {
  const response = await next();
  response.headers.set('Strict-Transport-Security', 'max-age=31536000; includeSubDomains; preload');
  response.headers.set('X-Frame-Options', 'SAMEORIGIN');
  response.headers.set('X-Content-Type-Options', 'nosniff');
  response.headers.set('Referrer-Policy', 'strict-origin-when-cross-origin');
  response.headers.set('Permissions-Policy', 'camera=(), microphone=(), geolocation=()');
  return response;
});
_headers (static host: Netlify, Cloudflare Pages)
/*
  Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  X-Frame-Options: SAMEORIGIN
  X-Content-Type-Options: nosniff
  Referrer-Policy: strict-origin-when-cross-origin
  Permissions-Policy: camera=(), microphone=(), geolocation=()

De verbinding (HTTPS en het certificaat)

HTTPS afdwingen en het certificaat regelt je host of CDN. Zorg dat http naar https doorstuurt en dat het certificaat geldig is en niet verlopen. De meeste hosts en CDN's doen dit met een schakelaar of een gratis Let's Encrypt-certificaat.

Lees verder

DNS-records (SPF, DMARC, DNSSEC, IPv6)

Deze staan los van je site: het zijn records bij je domein. Je zet ze bij je DNS-provider of domeinregistrar, niet in je CMS of op je host. SPF en DMARC gaan over wie mail namens je domein mag sturen, DNSSEC ondertekent je DNS, en IPv6 is de enige waar de host eerst een AAAA-record en verbinding moet aanbieden voordat je die kunt zetten.

Verdieping

Advies voor een ander platform