Proteggere WordPress da richieste URL maligne

A settembre 2009 WordPress fu oggetto su larga scala di una serie di attacchi che sfruttavano URL confezionati ad arte. Con una funzione specifica possiamo rendere nulli questi tentativi criminali.

Note
Post aggiornato il 30 dicembre @ 19:33

Leggo e rimbalzo ai lettori italiani il post di Jeff Starr su come proteggere WordPress da richieste URL pericolose come quelle che, vi ricorderete, a settembre scorso posero le installazioni non aggiornate di WordPress sotto attacco. Quegli indirizzi, spesso molto lunghi, contenevano parole come “eval” e “base64_decode”. Con quattro righe di codice, però possiamo impedire richieste di indirizzi che abbiano queste caratteristiche.

Copiate queste righe:

<?php 
/* 
Plugin Name: Block Bad Queries
Plugin URI: http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/
Description: Protect WordPress Against Malicious URL Requests
Author URI: http://perishablepress.com/
Author: Perishable Press
Version: 1.0
*/
global $user_ID; if($user_ID) {
 if(!current_user_can('level_10')) {
  if (strlen($_SERVER['REQUEST_URI']) > 255 || 
   strpos($_SERVER['REQUEST_URI'], "eval(") || 
   strpos($_SERVER['REQUEST_URI'], "CONCAT") || 
   strpos($_SERVER['REQUEST_URI'], "UNION+SELECT") || 
   strpos($_SERVER['REQUEST_URI'], "base64")) {
    @header("HTTP/1.1 414 Request-URI Too Long");
    @header("Status: 414 Request-URI Too Long");
    @header("Connection: Close");
    @exit;
  }
 }
} ?>

incollatele in un file con nome block-bad-queries.php, uploadatelo nella directory wp-content/plugins e attivate il plugin. Da questo momento le richieste di indirizzi che

  • siano più lunghe di 255 caratteri
  • o che contengano la parola eval(
  • o che contengano la parola base64
  • o che facciano altre operazioni non consentite come concat e union+select

non verranno soddisfatte. Ho aggiunto anche una condizione iniziale per permettere all’amministratore del sistema di essere escluso da quelle regole: può succedere, infatti, che una operazione amministrativa come la modifica di massa di più post generi URL lunghe, rendendo impossibile la modifica.

Questo, comunque, non vi esonera dall’impegno di aggiornare la vostra copia di WordPress. :mrgreen:

Autore: Aldo Latino

Aldo Latino usa con entusiasmo Linux nella distribuzione Ubuntu, è un appassionato di WordPress e si diletta a fare il blogger. Ha anche una lista dei desideri. Per altre informazioni visita la sua .

11 pensieri riguardo “Proteggere WordPress da richieste URL maligne”

  1. Ciao, arrivo dal blog di Ghido ed è interessantissimo questo post, grazie :) però ho un problema, ho inserito il plugin nell’apposita cartella ma non me lo visualizza nell’elenco e quindi non riesco ad attivarlo, come mai?

    1. Ciao Alessia, strano.
      Cancella il file del plugin che hai caricato sul server e invece ricreane uno nuovo con le righe attuali che ho modificato.

      Fammi sapere.

      1. grazie Aldo, sei gentislissimo!
        Sto provando adesso adesso, ti farò sapere domani ;)
        Ma il file php i cui incollo quelle righe lo chiamo come voglio io?
        BUON ANNOOOO :grin:

        1. ti faccio sapere subito visto che sono ancora qui: no, non mi si vede tra i plugin :(
          Vediamo se faccio tutto giusto: apro il blocco note, incollo le tue righe e salvo il file con estensione php con un nome a mia scelta e lo metto nella cartella dei plugin via ftp, giusto? :monkey:

          1. Esatto. Ma non capisco come mai non lo vedi.
            Senti, ti preparo io il file e te lo mando via email (quella che hai lasciato nel form del commento).

            Fammi sapere.

  2. New version posted at Perishable Press should work in all versions of WordPress. The plugin needed a different way to do “current_user_can”, as well as the proper plugin declaration that you have shared here. Thanks for the help, Aldo.

I commenti sono chiusi