§

Bemenet

Mód
Entitás stílus
Kódolás hatálya
§

Kimenet

Az amerikai és brit web csapatok a HTML entitás kódoláshoz nyúlnak, amikor felhasználó által megadott szöveg egy szerver által renderelt oldalra vagy e-mail sablonba kerül. Az OWASP XSS Prevention Cheat Sheet az entitás kódolást 1. szabályként jelöli meg a HTML törzs kontextusában.

Hogyan működik a HTML entitás kódolás

Egy HTML entitás egy karakterhivatkozás, amit a böngésző visszaalakít egyetlen karakterré.

  1. Válassz módot és hatályt. A kódolási mód karakterről karakterre járja be a bemenetet. A dekódolási mód entitás mintákat keres.
  2. Válassz entitás stílust. A névszerinti entitások jól olvashatók a forrásban. A decimális és hex hivatkozások minden Unicode kódponthoz elérhetők.
  3. Bemenet bejárása. Kódoláskor minden kódpontot ellenőrizünk a beépített táblában. Dekódoláskor egy reguláris kifejezéssel keresünk.
  4. Karakterekhez rendelés. A névszerinti találatok egy fordított táblán keresztül oldódnak fel. A numerikus találatok a String.fromCodePoint-on mennek keresztül.
  5. Élő mód. Kapcsold be az élő módot, és minden billentyűleütés újrafuttatja a konverziót 150 ms debounce-szal.

Miért kódolj HTML entitásokat

  • A felhasználói bemenet ne törje meg az elrendezést. Amikor egy felhasználó egy <-t ír be, a szöveg HTML-be dobása átírja az oldal többi részét.
  • Attribútum értékek érvényességének megőrzése. Egy idézőjeles karakterlánc HTML attribútumba ágyazásához az idézőjelet le kell cserélni.
  • Véletlen HTML semlegesítése tárolt adatokban. A naplók és hibajelentések gyakran tartalmaznak szögletes zárójeleket és és jeleket.
  • Kódrészletek biztonságos megosztása. Példa tag-ek beillesztése blog bejegyzésbe vagy e-mailbe kódolást igényel.

Gyakori alkalmazások

Az entitás kódolás ott jelenik meg, ahol nyers szöveg HTML-be kerül futási időben.

  • Szerver által renderelt sablonok: Jinja2, ERB, Twig és Handlebars alapértelmezés szerint escape-elnek.
  • E-mail és hírlevél szerkesztés: sok ESP sablonmotor nem escape-eli automatikusan a mezőket.
  • Dokumentáció és kódminták: példa HTML tag-ek beillesztése blog bejegyzésbe.

Egy kidolgozott példa

Illeszd be a <script>alert('hi')</script> szöveget Kódolás módban, Névszerinti stílussal.

FAQ

Mik azok a HTML entitások?

A HTML entitások karakterhivatkozások, amelyeket a böngésző egyetlen karakterré alakít vissza az oldal elemzésekor.

Mikor használjak névszerinti vs numerikus entitásokat?

Névszerinti entitásokat használj, ha a forrás olvashatósága fontos. Numerikusat, ha a fogyasztó régebbi vagy szigorúbb.

A dekódolás kezeli a hex entitásokat, mint a &?

Igen. A dekódoló egyetlen regex-et használ, ami mindhárom entitás formát egy menetben felismeri.

Biztonságos ez a nem megbízható bemenettel?

A kodek maga csak böngészőben fut, és nem küldi sehova a bemenetet. A kimenet biztonsága a kontextustól függ.

A böngészőoldali entitás kódolás a felhasználói bemenet és a megjelenített HTML határán helyezkedik el.