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.
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?
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.
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
Si come vuoi tu. Ma magari sarebbe più indicato chiamarlo block-bad-queries.php
Auguri!!!
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?
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.
ma non è che copi anche i numeri delle linee?
quelli devi lasciarli fuori!
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.
Many thanks to you, Jeff, for sharing your useful posts and making me informed here.
Ben fatto e funzionante!!
Come sempre, del resto!
Belle cose, a presto.
Paolo