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 oplossing zit.

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 heeft geen server die ze kan meesturen.

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 regel je bij 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 waarvoor je host eerst IPv6 moet ondersteunen voordat je het AAAA-record kunt zetten.

Verdieping

Advies voor een ander platform