Gli attacchi XSS in WordPress purtroppo coinvolgono anche i CSS incorporati.

Consideriamo questo esempio:


<style>
#header {
  background-image: url(<?php echo $bg; ?>);
}
</style>

Se l'attacco ha avuto successo avremo:


<style>
#header {
  background-image: url('javascript: alert("XSS!")');
}
</style>

Nei CSS url() è una funzione che elabora tutti i tipi di URL considerati validi dal browser, quindi anche quelli che eseguono codice JavaScript. Occorre quindi validare l'URL memorizzato nella variabile che verrà passata alla funzione:


function my_is_valid_css_url( $url ) {
    if( filter_var( $url, FILTER_VALIDATE_URL ) ) { // È un URL completo e valido?
        if( preg_match( '/(\.jpg|\.jpeg|\.gif|\.png)$/', $url ) ) {  // Contiene un riferimento ad un'immagine?
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}