esc_html()
unika ciągu, aby nie był analizowany jako HTML. Znaki takie <
są <
na przykład konwertowane na. Będzie to wyglądać tak samo dla czytnika, ale oznacza to, że jeśli wyświetlana jest wartość, <script>
to nie będzie interpretowana przez przeglądarkę jako rzeczywisty znacznik skryptu.
Użyj tej funkcji, ilekroć wyprowadzana wartość nie powinna zawierać HTML.
esc_attr()
unika ciągu, dzięki czemu można go bezpiecznie używać w atrybucie HTML, class=""
na przykład. Zapobiega to wyrwaniu się wartości atrybutu HTML. Na przykład, jeśli wartość wynosi "><script>alert();</script>
i próbujesz wyprowadzić ją w atrybucie HTML, zamknie bieżący znacznik HTML i otworzy znacznik skryptu. To jest niebezpieczne. Po usunięciu wartości nie będzie w stanie zamknąć atrybutu HTML oraz oznaczyć i wygenerować niebezpiecznego kodu HTML.
Użyj tej funkcji, gdy wyprowadzasz wartość wewnątrz atrybutu HTML.
esc_url()
unika ciągu, aby upewnić się, że jest to prawidłowy adres URL.
Użyj tej funkcji, gdy wypisujesz wartość wewnątrz atrybutu href=""
lub src=""
.
esc_textarea()
ucieka z wartości, aby można było bezpiecznie używać jej w <textarea>
elemencie. Poprzez ucieczkę wartości za pomocą tej funkcji zapobiega ona <textarea<
zamykaniu <textarea>
elementu i wysyłaniu własnego kodu HTML przez wartość wyprowadzaną wewnątrz a .
Użyj tej funkcji, gdy wyprowadzasz wartość wewnątrz <textarea>
elementu.
esc_html()
a esc_attr()
także wersje kończące się __()
, _e()
a _x()
. Są one przeznaczone do wyprowadzania ciągów podlegających tłumaczeniu.
WordPress posiada funkcje __()
, _e()
a _x()
na wpisywanie tekstu, który może być tłumaczone. __()
zwraca ciąg do przetłumaczenia, _e()
powtarza ciąg do przetłumaczenia i _x()
zwraca ciąg do tłumaczenia w danym kontekście. Prawdopodobnie widziałeś ich wcześniej.
Ponieważ niekoniecznie można ufać plikowi tłumaczenia, który zawiera bezpieczne wartości, użycie tych funkcji podczas wyprowadzania łańcucha do przetłumaczenia gwarantuje, że wyprowadzane ciągi nie mogą powodować tego samego problemu opisanego powyżej.
Używaj tych funkcji przy wysyłaniu ciągów do przetłumaczenia.