✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Disinfezione degli URL in WordPress

42

Lavorare con campi incentrati sull’utente in WordPress, come inputelementi, textareaelementi o qualsiasi tipo di campo in cui un utente può fornire i propri valori è un luogo che dovrebbe sempre essere un obiettivo di sanificazione.

Fortunatamente, l’API di WordPress fornisce una serie di funzioni per aiutare in questo. A seconda del caso d’uso, potrebbe essere necessario eseguire una delle seguenti operazioni:

E quelli vanno tutti bene, ma ci sono anche modi in cui puoi lavorare per disinfettare i dati usando le funzioni fornite da PHP.

Certo, a volte le espressioni regolari sono la strada da percorrere ma, altre volte, potresti voler utilizzare strutture integrate nel linguaggio, più facili da capire e più facili da seguire.

Quando scrivo il mio codice (e quando ne rivedo altri) cerco di tenerlo a mente. Quindi, detto questo, ecco un processo che puoi utilizzare per semplificare i tuoi sforzi quando lavori con gli URL in WordPress.

Se non sei pronto per la discussione completa su questo, puoi saltare al titolo in fondo al post che delinea il codice e come usarlo nel tuo lavoro.

Diciamo che hai un inputelemento aperto e vuoi consentire all’utente di fornire un URL che verrà eventualmente visualizzato sul front-end, magari in un collegamento, in un tipo di schema o semplicemente così com’è.

È possibile essere davvero aggressivi e semplicemente fare qualcosa del tipo "Se questo non è un URL valido, non salvarlo".

E, per essere chiari, non sto dicendo che un URL valido non restituisca un 404 (perché a volte le pagine esistono e anni dopo no). Sto definendo un URL valido come uno che è formattato correttamente e non include alcuna informazione estranea.

Ad esempio, per il bene di questo semplice esempio, stai offrendo un campo di testo che alla fine verrà salvato nella tabella dei metadati del post. Inoltre, eliminerai tutto ciò che è illegale in un URL e lascerai solo ciò che creerebbe un URL valido.

Per fare ciò, trovo molto utili le seguenti funzioni:

  • strip_tags. Elimina i tag HTML e PHP da una stringa.
  • stripslash. Deseleziona una stringa tra virgolette.
  • var_filtro. Filtra una variabile con un filtro specificato.

Quest’ultimo suona un po ‘confuso perché si basa sull’idea che tu capisca cosa sono effettivamente i filtri. In PHP, i filtri possono essere suddivisi in due casi d’uso:

  1. Convalida
  2. Sanificazione

E sono essenzialmente modi predefiniti per elaborare i dati in modo tale da elaborare i dati per determinare se è il tipo di informazioni, di solito una stringa o un array, che stiamo cercando.

Metterlo al lavoro

Con questo in mente, ecco come potresti provare a salvare le informazioni nel database senza alcun tipo di sanificazione (che è una brutta cosa):

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

Con il codice sopra, l’utente può letteralmente inserire qualsiasi cosa nel campo e salvarlo nel database. Per questo la sanificazione è importante. Senza di esso, l’utente può devastare l’esperienza dell’utente o l’intera installazione di WordPress.

Quindi, com’è applicare il codice dall’alto durante la sanificazione degli URL? In generale, si presenta così :

<?php

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

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

Innanzitutto, il codice viene eseguito attraverso un filtro PHP che convalida un URL. Se la stringa passata alla funzione di filtro non funziona nemmeno come URL, la funzione restituirà false.

Se, d’altra parte, funziona come un URL valido, possiamo rimuovere tutte le barre che non sono necessarie. Ciò significa che possiamo "annullare le virgolette di qualsiasi stringa tra virgolette". Più precisamente questo eliminerà la prima barra rovesciata consecutiva (perché, in PHP, le barre rovesciate vengono utilizzate per sfuggire a una barra rovesciata). Chiaro? 🙂

Infine, scegliamo di rimuovere i tag perché vogliamo solo l’URL stesso. Non vogliamo alcun markup, tag o qualsiasi cosa che possa essere in grado di sabotare i dati scritti nel database. Ciò significa che se scegli di eseguire qualcosa come:

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

Ti resterà:

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

Quindi mettendo insieme tutto il codice sopra usando questa stringa:

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

Risulterà nel seguente output:

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

Questo ovviamente non è un URL valido ma è pulito, sicuro e ti consente di eseguire qualsiasi altro lavoro che potresti dover fare per convalidare che l’URL sia sicuro per l’utente.

Fonte di registrazione: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More