Konwertuj znaki specjalne na encje HTML i z powrotem.
Wszystkie obliczenia wykonywane są lokalnie w przeglądarce. Dane nie są wysyłane na serwer.
Wyniki mają charakter informacyjny. Potwierdź je w innych źródłach.
Zamień ampersand na końcu, a zepsujesz każdą encję, którą właśnie zapisałeś
Escapowanie HTML ma pięć znaków i jedną regułę kolejności. Ampersand musi iść pierwszy, bo każde kolejne podstawienie wprowadza nowe ampersandy. Zamień go na końcu, a < stanie się &lt; — strona wyświetli tekst encji zamiast znaku, a błąd będzie wyglądał na popsuty szablon, a nie na pomyłkę w kolejności.
Jak to działa
- Zamienia znaki niosące znaczenie w HTML na ich postacie encji i z powrotem.
- Stosuje podstawienia w kolejności, która unika podwójnego escapowania.
- Obejmuje pięć predefiniowanych encji oraz odwołania liczbowe do wszystkiego pozostałego.
& → & MUSI być podstawiony pierwszy < → < > → > " → " ' → ' wszystko inne: &#DZIESIĘTNIE; albo &#xSZESNASTKOWO;
Przykład z liczbami
Ciąg <b>a & b</b> zescapowany poprawnie, a potem z ampersandem obsłużonym na końcu.
- poprawna kolejność → <b>a & b</b>
- ampersand na końcu → &lt;b&gt;a & b&lt;/b&gt;
- każda encja z wcześniejszych kroków została zescapowana ponownie
- przeglądarka wyświetla potem na stronie dosłowny tekst <b>
Jedna przestawiona linia zamienia działające wyjście w widoczne kody encji. Pięć podstawień z osobna jest banalne; jedyne, co może pójść nie tak, to wykonanie ich w złej kolejności.
Jak czytać wynik
- Escapowanie zależy od kontekstu, a to obejmuje jeden kontekst. Wartość bezpieczna w tekście elementu nie jest automatycznie bezpieczna w atrybucie, w adresie URL, wewnątrz bloku skryptu ani w CSS — każde z tych miejsc wymaga własnego escapowania zastosowanego tam, gdzie jest używane.
- ' jest zdefiniowane w XML, ale nie było w HTML 4, i dlatego ' to bezpieczniejsza postać liczbowa apostrofu w wyjściu HTML, które może trafić do starszych parserów.
- Wartości atrybutów wymagają szczególnie escapowania cudzysłowów. Niezescapowany cudzysłów wewnątrz atrybutu w cudzysłowach kończy atrybut przedwcześnie, a to mechanizm stojący za sporą częścią wstrzyknięć przez szablony.
- Escapowanie to nie sanityzacja. Czyni znaczniki bezwładnymi, wyświetlając je jako tekst; nie rozstrzyga, czy treść w ogóle była dopuszczalna, a system, który musi przepuścić trochę HTML, potrzebuje parsera i listy dozwolonych, a nie escapera.
Częste pytania
- Dlaczego moja strona pokazuje <b> jako tekst?
- Treść została zescapowana dwukrotnie, najczęściej dlatego, że reguła ampersanda zadziałała po pozostałych, albo dlatego, że wartość zescapowaną wcześniej szablon zescapował ponownie. Znajdź warstwę robiącą to nadmiarowo, zamiast odkodowywać na końcu.
- Czy trzeba escapować wszystkie pięć znaków?
- W tekście elementu minimum to ampersand i nawiasy ostrokątne. Wewnątrz wartości atrybutów potrzebne są też znaki cudzysłowu, a ponieważ escapery rzadko wiedzą, do jakiego kontekstu trafiają, obsłużenie wszystkich pięciu jest bezpiecznym domyślnym wyborem.