Lokalnyheter?

Tidningsnotis, troligtvis från 2001, i Avesta Tidning.

“En av de första Svenska virala fenomenen” (enligt Sveriges Radio)

Väldigt liten och obetydlig samt “extremt lokal” nyhet blir välkänd

Ikonisk bild tagen av samma lokalreporter, Thomas Ahlin


Vad är nyheten?

En grå marsdag i Avesta i början av 2000-talet: Några ungdomar har varit ute för att kolla på CD-skivor på lunchrasten, men det var stängt

...

Thats It

Det Blev Ingen CD

Utfall

2004, Webbsida det-blev-ingen-cd.com lanseras

2018, Genomgick en refaktorering och vart Open Source*

2019, En dokumentärfilm om nyheten släpps under hösten samma år

2023, ;-)

*github.com/bombsimon/det-blev-ingen-cd.com

Cloudflare Pages

Static Site Hosting

Stöd för de flesta Front-End ramverken (React, Vite, Svelte etc)

Hanterar SSL/TLS (HTTPS) med tillhörande certifikat

Andra alternativ: {Cloudflare, GitHub, GitLab} Pages, Netlify, Vercel etc


Cloudflare Pages, forts

Gömmer merparten av webbserver konfigurationen bakom ett fint gränssnitt

Möjlighet att ändra inställningar kring SSL/TLS, Omdirigering, Rate limiting etc

Custom domains

Webbsäkerhet, vad och varför?

HTTP Strict Transport Security (HSTS)

Content Security Policy (CSP)

Subresource Integrity (SRI)


HSTS

HTTP Header som tvingar browser anslutning över HTTPS

Attribut som max-age, includeSubDomains och preload

Browser: Tillåt inget annat än https för domänen, kom ihåg det så här länge, applicera det också för alla mina subdomäner samt tillåt inläsning av detta i förväg.

Förinläst HSTS databas, hstspreload.org


HSTS

CSP

HTTP Header som begränsar tillgången till webresurser

Attribut som {style, script, img, connect}-src

Browser: Begränsa inläsningen av webresurserna enligt headern content-security-policy

Eventuella fel som browsern upptäcker kan rapporteras med report-to headern


default-src 'self';
connect-src 'self' https://*.google-analytics.com;
script-src 'self' https://www.googletagmanager.com 'sha256-MIxUxP1eI71+iIPFXEcZzdvb/Whmq+vPhAWxUfjTzOY=' 'sha256-bUf9tVceFEfgLN9S61nbHttCZLlXubeFiaARwPWmgLo=';
style-src 'self' 'sha256-XOyHuWE0UOp5Z40lP6GhS+bertK9G9ZvTLNyfBds1/I=' https://cdnjs.cloudflare.com;
img-src 'self';
object-src 'none';
form-action 'self';
frame-ancestors 'none';
base-uri 'self';
font-src 'self';
media-src 'self';
frame-src 'self';
upgrade-insecure-requests;

CSP, forts

Inline resurser, ex script och style, kan verifieras med hash eller nonce

SHA{256, 384, 512} hash av innehållet i inline style eller script tag, ex 'sha256-MIxUxP1eI71+iIPFXEcZzdvb/Whmq+vPhAWxUfjTzOY='

Nonce, Number Used Once, ett slumptal i CSP attributet som matchar slumptal i inline style eller script tag.

Content-Security-Policy: script-src 'nonce-2726c7f26c';

<script nonce="2726c7f26c">
const inline = 1;


SRI

Validering av externa script och stylesheet (<script> || <link>)

Använder SHA hash precis som {script, style}-src i CSP

Läggs till som Integrity attribut i taggen

<script
src="https://example.com/example-framework.js"
integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7H…


Finns nu, med vettig domän, det-blev-ingen-cd.SE

Hostad hos Cloudflare Pages

Alla (nästan) tidigare nämnda säkerhetsfunktioner aktiverade

Skriven i Ren HTML, CSS och Javascript


Cloudflare HSTS
Cloudflare TLS

./_headers
/*
Content-Security-Policy: default-src 'self';
connect-src 'self' https://*.google-analytics.com;
script-src 'self' https://www.googletagmanager.com 'sha256-MIxUxP1eI71+iIPFXEcZzdvb/Whmq+vPhAWxUfjTzOY=' 'sha256-bUf9tVceFEfgLN9S61nbHttCZLlXubeFiaARwPWmgLo=';
style-src 'self' 'sha256-XOyHuWE0UOp5Z40lP6GhS+bertK9G9ZvTLNyfBds1/I=' https://cdnjs.cloudflare.com;
img-src 'self';
object-src 'none';
form-action 'self';
frame-ancestors 'none';
base-uri 'self';
font-src 'self';
media-src 'self';
frame-src 'self';
upgrade-insecure-requests;
X-Frame-Options: DENY
X-XSS-Protection: 0
Referrer-Policy: no-referrer