security/noopener

Af content-framework-redaktionen · Opdateret
Sikkerhed · scope: page · severity: error

target="_blank" links carry rel="noopener". Reglen security/noopener kører i page-scope med severity 'error' og indgår i sikkerhed-domænet sammen med 4 andre kontrakter i frameworket.

Hvorfor noopener findes

A target="_blank" link without rel="noopener"/"noreferrer" gives the opened page scriptable access to window.opener (reverse tabnabbing). Gold standard: every external _blank link has rel="noopener" (add "noreferrer" when referrer leakage matters).

Sådan håndhæves noopener

Reglen noopener evalueres på hver enkelt renderet HTML-side for sig, så et fund altid kan føres tilbage til én konkret side og én konkret rettelse i data eller template. Fejler en side, får agenten en finding, hvor fix-instruktionen for noopener er formuleret som en konkret arbejdsordre med filnavne og målbare krav — aldrig et vagt råd. Severity 'error' betyder at et brud på noopener fejler hele verifikationen med exit-kode 1, så hverken CI eller en agent kan skibe sitet før fundet er rettet.

Domænet: sikkerhed

Security-domænet fjerner de klassiske statiske-site-huller: mixed content, reverse tabnabbing, inline event handlers, manglende SRI og base-tag-kapring. Et zero-JS content-site kan køre en stram CSP uden undtagelser — så det skal det. Netop derfor hører noopener hjemme her: kravet kan afgøres maskinelt, og dermed kan det håndhæves i stedet for blot at blive anbefalet.

Test og fixtures

Som alle kontrakter i frameworket har security/noopener en mutant-test, der beviser at reglen fejler, når kravet brydes — en regel uden en fejlende test er ikke en regel. Golden-fixturet beviser omvendt, at en fuldt compliant side består noopener sammen med de øvrige 85 regler, og denne demoside er selv underlagt hele kontrakten.

Relaterede regler

Tilbage til oversigten over alle 86 regler.