Evitare SQL Injection con WordPress

Il problema SQL Injection è stato ampliamente discusso e tempo fa segnalavo anche un interessante PDF sull’argomento.

sql-injection

Anche lo sviluppo di plugin per WordPress può essere soggetto a questo tipo di attacchi ed è quindi bene prendere tutte le precauzione del caso ogni volta in cui si lavora direttamente con il database

Da poco ho scoperto che WordPress implementa nativamente un sistema per formattare le query SQL e la documentazione relativa alla classe WPDB ha un capitoletto dedicato alla descrizione del suo funzionamento: Protect Queries Against SQL Injection Attacks

Vediamo come funziona:

$ID = get_the_ID();

$post_type = “attachment”;

$sql_attachment = “select post_name , guid , post_mime_type
from maurizio_posts where post_type = %s and post_parent = %d”;

$wpdb->query($wpdb->prepare($sql_attachment, $post_type, $ID));

Nell’esempio viene prapareata un’estrazione di tutti gli “attachment” associati ad un determinato post ma nella query non vengono usati direttamente i valori ma dei segnaposti che verranno poi sostituiti dalla funzione “prepare“.
Il segnaposto “%s” dichiara un valore stringa mentre “%d” dichiara la nostra variabile con un valore numerico.

In questo caso i vantaggi dell’utilizzo di questa tecnica non sono molti in quanto possiamo dire che i valori passati alla query siano relativamente sicuri, ma facciamo adesso un esempio in cui diamo all’utente la possibilità di indicare il nome dell’attachment da cercare.

$search = $_GET[“search_string”];

$sql_attachment = “select post_name , guid , post_mime_type
from maurizio_posts where post_type = ‘attachment’
and post_name like (%s) “;

$wpdb->query($wpdb->prepare($sql_attachment, ‘%’.$search.’%’));

Nell’esempio la stringa di ricerca viene passata tramite un form di input e non possiamo essere certi di cosa abbia digitato l’utente e se non usassimo la funzione “prepare” potremmo essere soggetti ad un tentativo di SQL Injection.

Questa “tecnica” fa ovviamente parte anche delle linue guida per lo sviluppo di wordpress che, nel caso non conosciate, vi consiglio di andare a leggere.

Image Credits: The Tech Herald

Pubblicato da .:: Maurizio Pelizzone

WordPress Lover

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.