HTML-sanering
Inom datasanering är HTML-sanering processen att undersöka ett HTML- dokument och producera ett nytt HTML-dokument som endast bevarar de taggar som är betecknade som "säkra" och önskade . HTML-sanering kan användas för att skydda mot attacker som cross-site scripting (XSS) genom att rensa all HTML-kod som skickats av en användare.
Detaljer
Grundläggande taggar för att ändra teckensnitt är ofta tillåtna, som <b>
, <i>
, <u>
, <em>
och <strong>
medan mer avancerade taggar som <script>
, <object>
, <embed>
och <länk>
tas bort av saneringsprocessen. Även potentiellt farliga attribut som onclick
-attributet tas bort för att förhindra att skadlig kod injiceras.
Sanering utförs vanligtvis genom att använda antingen en vitlista eller en svartlista . Att lämna ett säkert HTML-element från en vitlista är inte så allvarligt; det betyder helt enkelt att den funktionen inte kommer att inkluderas efter sanering. Å andra sidan, om ett osäkert element lämnas utanför en svartlista, kommer sårbarheten inte att saneras från HTML-utdata. En inaktuell svartlista kan därför vara farlig om nya, osäkra funktioner har införts i HTML-standarden.
Ytterligare sanering kan utföras baserat på regler som anger vilken operation som ska utföras på ämnestaggarna. Typiska operationer inkluderar att ta bort själva taggen samtidigt som innehållet bevaras, att endast textinnehållet i en tagg bevaras eller att vissa värden tvingas på attribut.
Genomföranden
I PHP kan HTML-sanering utföras med funktionen strip_tags()
med risk för att ta bort allt textinnehåll efter en ostängd mindre än symbol eller vinkelparentes. HTML Purifier-biblioteket är ett annat populärt alternativ för PHP-applikationer.
I Java (och .NET ) kan sanering uppnås genom att använda OWASP Java HTML Sanitizer Project.
I .NET använder ett antal rengöringsmedel HTML Agility Pack, en HTML-tolkare.
I JavaScript finns det "JS-only" sanitizers för backend och webbläsarbaserade implementeringar som använder webbläsarens egen Document Object Model (DOM) parser för att analysera HTML (för bättre prestanda).