✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Oczyszczanie adresów URL w WordPress

67

Praca z polami zorientowanymi na użytkownika w WordPress – takimi jak inputelementy, textareaelementy lub dowolny rodzaj pola, w którym użytkownik może podać własne wartości, to miejsce, które zawsze powinno być celem sanityzacji.

Na szczęście API WordPressa zapewnia szereg funkcji, które mogą w tym pomóc. W zależności od przypadku użycia może być konieczne wykonanie jednej z następujących czynności:

I to wszystko jest dobre i dobre, ale są też sposoby, w jakie możesz pracować nad oczyszczaniem danych za pomocą funkcji dostarczanych przez PHP.

Jasne, czasami wyrażenia regularne są dobrym rozwiązaniem, ale innym razem możesz chcieć użyć funkcji wbudowanych w język, łatwiejszych do zrozumienia i łatwiejszych do naśladowania.

Pisząc własny kod (i recenzując inne) staram się o tym pamiętać. Mając to na uwadze, oto proces, którego możesz użyć, który może ułatwić Ci pracę z adresami URL w WordPress.

Jeśli nie masz ochoty na pełną dyskusję na ten temat, możesz przejść do nagłówka na dole postu, który przedstawia kod i sposób jego wykorzystania w pracy.

Załóżmy, że masz otwarty inputelement i chcesz zezwolić użytkownikowi na podanie adresu URL, który ostatecznie zostanie wyrenderowany w interfejsie użytkownika, być może w postaci linku, w jakimś schemacie lub po prostu bez zmian.

Można być naprawdę agresywnym i po prostu zrobić coś w stylu „Jeśli to nie jest prawidłowy adres URL, nie zapisuj go".

I, żeby było jasne, nie mówię, że prawidłowy adres URL nie zwraca błędu 404 (ponieważ czasami strony istnieją, a lata później nie). Prawidłowy adres URL definiuję jako taki, który jest poprawnie sformatowany i nie zawiera żadnych zbędnych informacji.

Powiedzmy, że dla tego prostego przykładu oferujesz pole tekstowe, które ostatecznie zostanie zapisane w tabeli metadanych postu. Co więcej, usuniesz wszystko, co jest nielegalne w adresie URL, i pozostawisz tylko to, co utworzy poprawny adres URL.

W tym celu najbardziej przydatne są dla mnie następujące funkcje:

To ostatnie brzmi trochę mylące, ponieważ opiera się na założeniu, że rozumiesz, czym właściwie są filtry. W PHP filtry można podzielić na dwa przypadki użycia:

  1. Walidacja
  2. Sanityzacja

Są to w zasadzie gotowe sposoby przetwarzania danych w taki sposób, aby przetwarzać dane w celu określenia, czy jest to typ informacji, zwykle łańcuch lub tablica, której szukamy.

Oddanie go do pracy

Mając to na uwadze, oto jak możesz spróbować zapisać informacje w bazie danych bez żadnego rodzaju sanityzacji (co jest złe):

<?php
$data['url'] = 'https://tommcfarlin.com/<script type="text/javascript">alert('hello world!');</script>';

Za pomocą powyższego kodu użytkownik może dosłownie wpisać wszystko w pole i zapisać to w bazie danych. Właśnie dlatego sanityzacja jest ważna. Bez tego użytkownik może siać spustoszenie w doświadczeniu użytkownika lub całej instalacji WordPressa.

Jak więc wygląda zastosowanie powyższego kodu podczas oczyszczania adresów URL? Generalnie wygląda to tak :

<?php

if (!isset($data['url']) {
   return '';
}

$url = $data['url'];
$data['url'] = strip_tags(
  stripslashes(
    filter_var($url, FILTER_VALIDATE_URL)) );

Najpierw kod jest uruchamiany przez filtr PHP, który sprawdza poprawność adresu URL. Jeśli ciąg przekazany do funkcji filtrującej nie działa nawet jako adres URL, funkcja zwróci false.

Z drugiej strony, jeśli działa jako prawidłowy adres URL, możemy usunąć wszelkie niepotrzebne ukośniki. Oznacza to, że możemy „usunąć cudzysłów z dowolnych ciągów w cudzysłowie”. Dokładniej, spowoduje to usunięcie pierwszego kolejnego ukośnika odwrotnego (ponieważ w PHP ukośniki odwrotne są używane do ucieczki przed ukośnikiem odwrotnym). Jasne?

Na koniec decydujemy się usunąć tagi, ponieważ chcemy tylko samego adresu URL. Nie chcemy żadnych znaczników, tagów ani niczego, co mogłoby sabotować dane zapisywane do bazy danych. Oznacza to, że jeśli zdecydujesz się uruchomić coś takiego:

https://tommcfarlin.com/<script type="text/javascript">alert('hello world!');</script>

Pozostanie ci:

"https://tommcfarlin.com/alert('hello world!');"

Tak więc składając cały powyższy kod razem za pomocą tego ciągu:

https://tommcfarlin.com/<script type="text/javascript">alert('hello world!');</script>'

Wynikiem będzie następujący wynik:

https://tommcfarlin.com/alert('hello world!');

Oczywiście nie jest to prawidłowy adres URL, ale jest czysty, bezpieczny i umożliwia wykonanie wszelkich innych czynności, które mogą być konieczne do sprawdzenia, czy adres URL jest bezpieczny dla użytkownika.

Źródło nagrywania: tommcfarlin.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów