HTML-entiteiten codeer- / decodeertool
Zet speciale tekens om naar HTML-entiteiten (&, <, ©) of decodeer entiteiten terug naar leesbare tekst — beide richtingen, live.
973 weergaven
Hoe Het Werkt
HTML reserveert een handvol tekens voor zijn eigen syntax: < en > markeren tags, en & start een entiteitverwijzing. Als die tekens letterlijk voorkomen in content die in een pagina wordt ingevoegd — een reactie, een gebruikersnaam, een zoekopdracht die wordt teruggetoond — probeert de browser ze als opmaak te interpreteren in plaats van als tekst weer te geven. Coderen zet ze om naar hun entiteitvorm (<, >, &) zodat ze als letterlijke tekens worden weergegeven in plaats van geïnterpreteerd. Decoderen keert dit om en zet entiteiten zoals & of ’ terug naar de daadwerkelijke tekens die ze vertegenwoordigen.
Dit is geen cosmetisch detail — het is een beveiligingsmaatregel. Als een reactievak gebruikersinvoer neemt en zonder eerst te coderen in de pagina-HTML invoegt, kan een bezoeker <script>...</script> typen en dat script daadwerkelijk laten uitvoeren in de browser van elke andere bezoeker: dit type kwetsbaarheid heet Cross-Site Scripting (XSS), en het coderen van niet-vertrouwde uitvoer voordat deze HTML raakt is de standaardverdediging hiertegen. Bijvoorbeeld, het coderen van de tekst 5 < 10 & 10 > 5 levert 5 < 10 & 10 > 5 op, wat correct wordt weergegeven en niet voor opmaak kan worden aangezien.
Wat U Moet Weten
- Benoemde en numerieke entiteiten vertegenwoordigen hetzelfde teken op verschillende manieren.
'(benoemd) en'(numeriek) betekenen beide een enkel aanhalingsteken, maar benoemde entiteiten zijn afhankelijk van het herkennen van die specifieke naam door de parser — numerieke entiteiten (decimaal of&#xhexadecimaal) worden universeel ondersteund en zijn veiliger voor machinaal gegenereerde uitvoer. - Coderen is niet de enige verdediging. Het beschermt tekstinhoud; attributen, URL's en inline JavaScript-contexten hebben hun eigen escape-regels nodig, aangezien een waarde binnen
href="javascript:..."of binnen een<script>-blok onder andere regels wordt geparseerd dan gewone hoofdtekst. - De omzetting is lokaal. Deze tool gebruikt de eigen DOM-parser van uw browser — er wordt niets geüpload of gelogd.
- Niet elke servergebaseerde templatetaal escapet standaard automatisch. Sommige (zoals oudere PHP-uitvoer of ruwe stringconcatenatie) vereisen dat u een escape-functie expliciet aanroept — dit vergeten is een van de meest voorkomende oorzaken van echte XSS-bugs.
- Sommige entiteiten lijken visueel bijna identiek. Een rechte apostrof (
') en een typografisch rechts enkel aanhalingsteken (’) worden op het scherm bijna hetzelfde weergegeven maar zijn verschillende bytereeksen — een verschil dat van belang is in codevoorbeelden of URL's.
Een concreet voor/na-voorbeeld: een reactieveld met Leuke post! 5 < 10, toch? heeft geen speciale behandeling nodig als platte tekst, maar zodra dit onbewerkt in een HTML-sjabloon wordt ingevoegd, zou een kwaadwillende bezoeker in plaats daarvan <img src=x onerror=alert(1)> kunnen indienen — coderen zet dit om in inerte, zichtbare tekst in plaats van een uitgevoerde afbeeldingsfout-handler.
Veelgestelde vragen
Waarom tekst coderen voordat het in HTML wordt geplaatst?
Een niet-geëscapete < of & in HTML-inhoud kan als opmaak worden geïnterpreteerd, waardoor de paginalayout breekt of — veel erger — geïnjecteerde <script>- of <img onerror>-tags daadwerkelijk kunnen worden uitgevoerd (Cross-Site Scripting). Coderen naar < en & houdt de tekst letterlijk en inert, ongeacht wat een gebruiker heeft getypt.
Ondersteunt het zowel benoemde als numerieke entiteiten?
Ja — decoderen begrijpt zowel benoemde entiteiten (&copy;) als numerieke, ongeacht of ze decimaal (&#169;) of hexadecimaal (&#x00A9;) zijn. Alle drie vertegenwoordigen hetzelfde ©-teken; de tool normaliseert ze allemaal terug naar het daadwerkelijke glyph.
Waarom een numerieke entiteit gebruiken in plaats van een benoemde, of andersom?
Benoemde entiteiten (&apos;, &hellip;) zijn leesbaarder in broncode, maar zijn afhankelijk van het herkennen van die exacte naam door de parser — een handvol minder gangbare namen heeft inconsistente ondersteuning in oudere tools. Numerieke entiteiten (&#39;, &#8230;) worden universeel begrepen door elke HTML-parser, ongeacht leeftijd of leverancier, en daarom geven geautomatiseerde tools en sanitisatiebibliotheken er vaak de voorkeur aan.
Maakt coderen alleen mijn pagina veilig tegen XSS?
Het behandelt tekstknopen, maar HTML heeft andere injectiecontexten — binnen een attribuutwaarde, binnen een URL, binnen een <script>- of <style>-blok — die elk hun eigen escape-aanpak nodig hebben, aangezien de parser van de browser van regels wisselt afhankelijk van waar hij zich in het document bevindt. Entiteit-coderen van tekstinhoud is één essentiële laag, niet de volledige verdediging; een bredere "sanitisatie"-stap die hele tags verwijdert of herschrijft is een aparte, meer specifieke tool voor wanneer u bewust wat beperkte HTML wilt toestaan.
Wordt mijn tekst ergens naartoe gestuurd?
Nee — de omzetting gebeurt direct in uw browser met de eigen parser van de DOM; niets wordt geüpload, gelogd of opgeslagen, wat het veilig maakt om echte, door gebruikers ingezonden content te testen, inclusief alles waarvan u vermoedt dat het een injectiepoging bevat.
Vergelijkbare tools
Probleem melden
HTML-entiteiten codeer- / decodeertool
Reacties
Nog geen reacties — schrijf de eerste!