HyperText Markup Language, eller HTML, är det primära språket för webbsidor på internet. Den innehåller stöd för ett antal andra språk som lägger till extra funktionalitet och stil som JavaScript och CSS. Alla dessa språk är textbaserade med några meningsfulla tecken som används för att separera bokstavliga strängar som ska skrivas ut till webbläsaren och kod som ska tolkas och köras.
Den här designen har dock några problem, dessa blir uppenbara när du vill skriva ut ett av de meningsfulla tecknen till webbläsaren. De bästa exemplen att använda är symbolerna "mindre än" och "större än". Dessa symboler används för att öppna och stänga kodsegment i HTML. Den korrekta metoden för att skriva ut dessa tecken till skärmen på ett säkert sätt är att använda HTML-enheter.
HTML-enheter och säkerhet
Tack vare att dessa tecken har en speciell betydelse måste du vara väldigt noga med att se till att du ersätter dem med HTML-entitetsversionen om du vill att de ska skrivas ut i webbläsaren. Tyvärr glömmer många webbutvecklare att användare kan skicka in input till många webbplatser. Om denna användarinmatning innehåller meningsfulla tecken och de inte ersätts med HTML-entiteter, i en process som kallas sanering, har webbplatsen en sårbarhet för Cross-Site Scripting (XSS).
Tips: Försök inte skicka in specialtecken till webbplatser i ett försök att hitta XSS-sårbarheter. Att göra det är tekniskt hackande och är ett brott om du inte har tillstånd från ägaren av webbplatsen.
Hur HTML-enheter fungerar (och ibland inte)
HTML-entiteter fungerar eftersom webbläsaren vet att det ska visas som det relevanta specialtecken och inte behandla det som ett specialtecken. Alla HTML-enheter börjar med et-tecken "&" och slutar med semikolon ";". De flesta tecken identifieras av ett enhetsnummer även om vissa specialtecken också har ett förkortningsnamn. Till exempel "&", "" har enhetsnumren "&", "" samt enhetsnamnen "&", "" respektive. Webbläsaren vet att dessa strängar betyder att den måste visa de relevanta tecknen.
Tips: Du kan hitta en fullständig lista med namn på teckenenheter här, även om stöd för enhetsnamn varierar beroende på webbläsare.
I de flesta fall bör användare bara se de tecken som HTML-entiteter representerar. Det är dock möjligt att se kodade tecken, vanligtvis et-tecken "&", genom en process som kallas "dubbelkodning". Detta händer när et-tecken visas i sin egen kodade version. Dubbelkodning sker vanligtvis när indata är korrekt kodad, eftersom den skickas, men när den matas ut saneras den igen. Detta resulterar i att et-tecken i början av "&" kodas en andra gång och visas som "&", webbläsaren sedan tolkar det korrekt som en sträng som ska skrivas ut som "&" efter att ha avkodat HTML-entiteten och ignorerat den partiella entitet.