Categorie
sviluppo wordpress

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

Categorie
segnalazioni wordpress

Il meglio del 2008 (1/3)

il-meglio-del-2008

In questi ultimi 12 mesi ho trascurato parecchio questo blog scrivendo in modo decisamente discontinuo ma nonostante questo, anche per me, è tempo di bilanci.
Voglio quindi riproporvi una piccola selezione di quelle che ritengo siano le 3 cose più interessanti uscite da queste pagine.

Si tratta di 3 articoli relativamente tecnici i cui argomenti spaziano dell’ottimizzazione delle tabelle MySql all’amministrazione di un server SSH sotto linux passando per la programmazione di un plugin per wordpress.

  • 5 nuovi indici per le tabelle di wordpress
    Mi appunto i comandi da lanciare in modo non dovermi ricordare la sintassi ed evitare refusi…
    In alcune installazioni il nome delle vostra tabelle potrebbe essere diverso… verificate quindi prima se avete usato un prefisso.
  • wp-holidays howto (1/2)
    Insieme a due tizi abbiamo rilasciato un piccolo e semplice plugin per wordpress che permette di visualizzare un’immagine sotto ogni post che invita all’iscrizione dei feed rss.
    La visualizzazione al fondo di ogni post è stata resa possibile utilizzando l’hook fornito da “the_content?.
  • Controllo degli accessi su SSH
    Questa mattina controllando i report di alcuni server relativi al traffico generato ho visto qualcosa di alquanto anomalo.
    Da una prima analisi non sembra essere successo nulla di grave in quanto dai log si può vedere un banale tentativo di dictionary attacks.

Ho trovato molto interessante realizzare questa “raccolta” ed ho in mente di proseguire la serie “il meglio del 2008” con una selezione dei post più intriganti trovati in rete e con una segnalazione dei blog più stimolanti scoperti in questo 2008.

Categorie
sviluppo wordpress

wp-holidays howto (1/2)

Se avete letto un po’ in giro avrete visto che la scorsa settimana insieme a due tizi abbiamo rilasciato un piccolo e semplice plugin per wordpress che permette di visualizzare un’immagine sotto ogni post che invita all’iscrizione dei feed rss.

wp-holidays summer image

Se volete provare ad usarlo potete dare un’occhiata alle guide realizzate dei due tizi…

La cosa simpatica è che da ieri sera wp-holidays è stato approvato dallo staff di wordpress.org, ed adesso si trova nel repository ufficiale

Questo, in teoria, dovrebbe permette l‘aggiornamento automatico. 🙂

Vorrei però in questa sede dare uno squardo a come funziona esaminando le chiamate alle funzioni di wordpress utilizzare.

Possiamo dividere il comportamento del plugin in due sezioni: lato blog (di cui ci occuperemo in questo post)e lato amministrazione (nei prossimi giorni).

La visualizzazione al fondo di ogni post è stata resa possibile utilizzando l’hook fornito da “the_content”.

add_filter(‘the_content’, ‘wp_holiday_filter’);

Con questa chiamata ogni volta che viene utilizzata la funzione “the_content” all’interno del nostro template viene attivata anche l’esecuzione della nostra procedura “wp_holiday_filter”

function wp_holiday_filter( $any=” ) {



$any .= “

“;

return $any;

}

Tralasciando quello che succende all’interno di questa funzione è interessante notare che viene passato un parametro (che io ho in modo assolutamente personale ho chiamato $any) nel quale è presente tutto il contenuto del post che verra visualizzato nelle nostre pagine.

Nel nostro caso è qundi sufficente aggiungere il codice per la visualizzazione della nostra immagine…

Per complicare un po’ le cose tra le opzioni configurabili tramite l’amministrazione abbiamo inserito la possibiltà di escudere la visualizzazione dalla nostra immagine dell’ homepage.

function wp_holiday_filter( $any=” ) {

if ( $wp_holiday_display == “nohome” && is_front_page() ) {

// check if we can diplay the image

} else {

$any .= “

“;

}

return $any;

}

Questo controllo viene fatto tramite la verifica di una variabile ” $wp_holiday_display” ed il controllo del valore della funzione “is_front_page()” che restuisce “true” se ci troviamo in home page.

Ma nel caso non volessimo visualizzarla neppure nelle singole pagine in quanto abbiamo decisodi posizionarla nella nostra sidebar?

Ecco che ci viene in auto un altra opzione configurabile tramite l’amministrazione che escude l’attivazione dell’hook


$wp_holiday_position = get_option(‘wp_holiday_position’);

if ( $wp_holiday_position == “after-post” ) {

add_filter(‘the_content’, ‘wp_holiday_filter’);

}

Vediamo come la variabile “$wp_holiday_position” sia valorizzata utilizzando “get_option“, poi controllando il valore viene valutato se attivare il filtro.

Se l’hook non viene attivato dobbiamo inserire nel codice php della nostra sidebar dove visualizzare l’immagine: ho creato quindi due funzioni richiamabili da template.

function wp_holiday( ) {

echo wp_holiday_filter();

}

function get_wp_holiday( ) {

return wp_holiday_filter();

}

La due funzioni permettono rispettivamente la stampa dell’output o, nel caso ne avessimo bisogno per un’ulteriore elaborazione, la gestione del codice html prodotto.

Per il momento mi fermo qui, nel prossimo post vedremo in quale modo è stata creata la pagine di amministrazione e come è sia possibile salvare le opzioni utilizzando le funzioni offerte dal motore di wordpress.

Questa la pagina per la segnalazione di bug e suggerimenti per la prossima versione.

Categorie
wordpress

Come funzionano i template di WordPress

Dopo diverse ore di agonia, ecco che vedono la luce le slide per la presentazione di domani …

L’idea è quella di fare un veloce introduzione, e poi vedere spulciare insieme due dei template più famosi … kubrick e k2

Ci vediamo domani 😉