and extracts the following text as a script body — the dev server then fails its dependency scan with `Expected ";" but found "non"` from the words "non-allowlisted hosts", which breaks e2e. So, what this buys, so nobody reads more or less into it: blocks external `script src=` from non-allowlisted hosts blocks injected inline scripts — each one is pinned by hash blocks fetch/XHR/WebSocket exfiltration (connect-src allowlist) blocks form-action, base-uri, object-src vectors does not stop image-based exfiltration — img-src must allow https: because event media comes from arbitrary publishers' og:image The cost of hashing is that an inline script edited after the hashes are computed is silently refused by the browser. That is why the violation reporter below exists: report-uri/report-to are ignored in a meta element and Pages serves no CSP header, so violations are caught in-page and sent to PostHog instead (src/lib/csp-report.ts, #241). frame-ancestors is deliberately NOT in this string: it is ignored in a meta element and browsers log a warning about it on every page load. It lives in public/_headers instead, ready for a CDN in front of Pages. X-Frame-Options (set there too) is the clickjacking control that actually applies today. */ }
strike

Massive Russian Strike Kills At Least 9, Cuts Power to Over 500,000

| Ukraine

A Russian missile and drone attack overnight Oct 13–14 hit power and heating plants, a substation and a data centre in Kyiv, plus energy sites in Kharkiv. Al Jazeera counts at least 9 dead: 3 in Kyiv, 2 in Dnipropetrovsk region, 1 in Zaporizhzhia region and 3 in Lutsk. Zelensky said about 39 ballistic missiles and 100+ drones were used and accused Russia of violating Trump's announced energy ceasefire; Ukraine's air force reported 4 ballistic missiles and 115 drones downed. Russia says it hit energy and communications facilities and downed 902 Ukrainian drones.

Firefighters respond to the attack on Kyiv
Firefighters respond to the attack on Kyiv — Al Jazeera / Reuters