To utrudnia moje kodowanie. Kodeks Wordpress uzasadnia użycie esc_url mówiąc niejasno o bezpieczeństwie. Ale czy to naprawdę jest warte kłopotów?
Na przykład, jaka jest ważna, praktyczna korzyść z bezpieczeństwa przy użyciu
<?php echo esc_url( home_url( '/' ) ); ?>
zamiast
<?php echo home_url() ?>
PS: Nie mówię o tworzeniu motywów, ale o konkretnej stronie.
home_url()
, jeśli są używane we właściwym kontekście. Zgodnie z tym zaleceniem spodziewałbymhome_url
się przeprowadzić własną dezynfekcję.cóż, wszystkie dane wprowadzane przez użytkowników powinny zostać oczyszczone ... Jeśli adres URL, który podajesz, nie jest danymi wprowadzanymi przez użytkownika (np. ustawienie strony przez osobę, której w pełni ufasz, wartości zapisane na stałe), możesz uwolnić się od esc-url.
ale gdybym mógł wstrzyknąć ten adres URL do Twojej witryny, mógłbym łatwo wstrzyknąć kod js lub kod przekierowania ... lub nawet kod po stronie serwera w niektórych sytuacjach.
może to prowadzić do przejęcia sesji, kradzieży kont użytkowników i innych złych opcji.
Edytować:
W twoim przykładzie
esc_url( home_url( '/' ) );
działało na wartości częściowo zakodowanej! dlatego
esc_url
można go wyeliminować.To powiedziawszy, nadal nie rozumiem, dlaczego przeszkadza rozróżnienie między momentem zagrożenia, a czasem nie ma i ogólnie sugeruje zachowanie esc_url () dla każdej wartości.
źródło
Inną rzeczą, o której należy pamiętać,
esc_url()
jest coś takiego jak.<a href="SANITIZE_THIS_URL">your_text</a>
Jeśli zamierzasz użyć adresu URL w danych wyjściowych HTML, na przykład atrybutu href dla łącza lub atrybutu src dla elementu obrazu, powinieneś użyćesc_url()
.esc_url_raw()
dotyczy innych przypadków, w których chcesz mieć czysty adres URL, ale nie chcesz, aby encje HTML były kodowane. Więc każde użycie nie HTML (DB, przekierowanie) wykorzystałoby to.esc_url_raw()
Funkcja zrobi niemal tak samo jakesc_url()
, ale nie będzie dekodować podmioty, co oznacza, że nie zastąpi & z & # 038 i tak dalej. Jak zauważył Mark, można bezpiecznie używać goesc_url_raw()
w zapytaniach do baz danych, przekierowaniach i funkcjach HTTP, takich jak `wp_remote_get () ', aby uzyskać więcej informacji o esc_url_raw ()źródło
esc_url służy do tworzenia prawidłowego kodu HTML (nie do dezynfekcji danych wejściowych). Powinieneś tego używać zawsze, gdy nie masz 100% pewności, że to, co chcesz wydrukować, to poprawny kod HTML dla tego kontekstu.
źródło