Alberto Carozzo - WordPress: patch anti spam
Questa nota deriva da una esperienza fatta sul campo: stiamo parlando degli attacchi spam al Blog WordPress.
Vi racconto la genesi dell'antefatto e quanto accaduto.
Dopo aver esaminato i tool gratuiti più in voga del Web ed analizzato le esigenze di GiveMeAChance,
nella progettazione del blog, alla fine ho scelto WordPress.
La release è stata scaricata da wwww.wordpress-it.it
nella sua versione italiana.
In seguito, sono stati aggiunti i seguenti plugin
- 1- wp-Captcha-contact-form-7[1].1.8.0.2.zip
- 2- wp-affiliate.zip
- 3- wp-adsense-manager.zip
Successivamente è stato scelto ed installato il tema: 'Coffee Desk 2.0 di Roam2Rome'.
Ma qui già sono state incontrate le prime difficoltè, infatti il captcha non funzionava correttamente
e si è reso necessario l'inserimento della seguente linea di codice nel file
wp-content/themes/coffee-desk/comments.php
do_action('comment_form',$ post->ID);
Purtoppo neanche questo è stato sufficiente; qualche giorno dopo si è verificato un attacco da parte di SPAMMER:
la struttura di ricezione dei commenti da parte dei visitatori veniva riempita di messaggi spammer inneggianti viagra e cose simili:
il tema 'Coffee Desk 2.0 di Roam2Rome' unitamente al captcha non erano più in grado di reggere l'impatto del flooding spam.
Dopo aver studiato la forma dell'attacco e vedendo che arrivava sempre dagli stessi IP e contenente messaggi più o meno somiglianti,
ho provveduto ad ampliare, dalla console di amministazione di wordpress, il numero di tags riconosciuti come spam, includendo anche gli indirizzi IP
di provenienza dello spam.
Questa soluzione ha permesso di evitare la pubblicazione sul blog dei messaggi degli spammer, ma, per come è stato progettato
wordpress, i messaggi venivamo comunque riconosciuti come commenti (anche se non pubblicati) e memorizzati nel DB di wordpress rischiando di
ingigantire in breve tempo la tabella dei commenti stessi.
Allora per prima cosa ho creato la seguente procedura PHP per ripulire il DB
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//
// File WP_delSPAM.php
//
// Deletes all SPAM comments from wp262_comments table
//
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// Include default settigns and connection to database
include 'common.h'; (una mia personale libreria per definire le costanti $ DB_SERVER, $ DB_USER, $ DB_PASS)
$ SPAM='spam';
$ con = mysql_connect($ DB_SERVER, $ DB_USER, $ DB_PASS);
if (!$ con) {
echo mysql_error();
exit;
}
if (!mysql_select_db($ DB_NAME,$ con)) {
echo mysql_error();
mysql_close($ con);
exit;
}
$ query = 'DELETE FROM wp262_comments WHERE comment_approved = $ SPAM';
mysql_query($ query,$ con);
mysql_close($ con);
echo('Fatto');
Successivamente per evitare di riempire nuovamente il DB dei messaggi spamming, ho modificato
il codice della funzione wp_new_comment() del file wp-includes/comment.php nel seguente modo:
function wp_new_comment( $ commentdata ) {
$ commentdata = apply_filters('preprocess_comment', $ commentdata);
$ commentdata['comment_post_ID'] = (int) $ commentdata['comment_post_ID'];
$ commentdata['user_ID'] = (int) $ commentdata['user_ID'];
$ commentdata['comment_author_IP'] = preg_replace( '/[^0-9a-fA-F:., ]/', '',$ _SERVER['REMOTE_ADDR'] );
$ commentdata['comment_agent'] = $ _SERVER['HTTP_USER_AGENT'];
$ commentdata['comment_date'] = current_time('mysql');
$ commentdata['comment_date_gmt'] = current_time('mysql', 1);
$ commentdata = wp_filter_comment($ commentdata);
$ commentdata['comment_approved'] = wp_allow_comment($ commentdata);
/* Inizio Vecchio codice
$ comment_ID = wp_insert_comment($ commentdata);
do_action('comment_post', $ comment_ID, $ commentdata['comment_approved']);
if ( 'spam' !== $ commentdata['comment_approved'] ) { // If it's spam save it silently for later crunching
if ( '0' == $ commentdata['comment_approved'] )
wp_notify_moderator($ comment_ID);
$ post = &get_post($ commentdata['comment_post_ID']); // Don't notify if it's your own comment
if ( get_option('comments_notify') && $ commentdata['comment_approved'] && $ post->post_author != $ commentdata['user_ID'] )
wp_notify_postauthor($ comment_ID, $ commentdata['comment_type']);
}
Fine Vecchio codice */
/* Inizio Nuovo Codice */
if ($ commentdata['comment_approved'] == 'spam'){
$ comment_ID=-1;
} else {
$ comment_ID = wp_insert_comment($ commentdata);
do_action('comment_post', $ comment_ID, $ commentdata['comment_approved']);
if ( 'spam' !== $ commentdata['comment_approved'] ) { // If it's spam save it silently for later crunching
if ( '0' == $ commentdata['comment_approved'] )
wp_notify_moderator($ comment_ID);
$ post = &get_post($ commentdata['comment_post_ID']); // Don't notify if it's your own comment
if ( get_option('comments_notify') && $ commentdata['comment_approved'] && $ post->post_author != $ commentdata['user_ID'] )
wp_notify_postauthor($ comment_ID, $ commentdata['comment_type']);
}
}
/* Fine Nuovo Codice */
return $ comment_ID;
}
Dopo aver filtrato taggato i messaggi dannosi come spam, svuotato il db e posto uno scudo davanti alla registrazione dei messaggi non graditi nel db, rimane da
creare un popup a ritroso che invii allo spammer un messaggio di avviso del tipo:
''Sul sito www.givemeachance.it/public/Wp262/ stanno arrivando messaggi spam provenienti dall'indirizzo xx.xx.xx.xx.
Preghiamo di interrompere immediatamente tale attività, diversamente saremo costretti ad esporre denuncia nei vostri confronti.
Grazie
GiveMeAChance''
Novità
Partnership Program con
Edizioni La Vita Felice
R.I.D.E.
Risveglio Interiore
Dell'Essere
L'unico libro che parla di TE!
eMail Marketing
Come creare una lista di email
e mantenerla nel tempo
La tua newsletter, ... ora!
Come diventare
un venditore TOP 10
su Internet
Incrementa anche tu
il tuo business
seguendo i consigli di Nicola Bertrami: successo di critica da parte dei migliori Internet Marketer Americani
Scarica Gratis
Social Network
Iniziativa
Segui il Quadrifoglio di
GiveMeAChance
il prossimo autore che
pubblica Gratis
con GiveMeAChance
puoi essere tu!
Siamo su Internet Magazine
|
|
|
|
|
|
Quick Link
- Sono un autore emergente (esordiente) e vorrei pubblicare un libro, un ebook, un romanzo, poesie, ecc... Sto cercando una casa editrice il cui editore sia disposto a prendere in considerazione la mia opera.
- Sono un musicista emergente (esordiente) e vorrei pubblicare la mia musica, composizione, canzone, melodia, ecc...
- Sono un fotografo videoamatore emergente (esordiente) e vorrei pubblicare le mie fotografie e video
- Sono un progettista software e vorrei pubblicare i miei script
- ... ma soprattutto sono una autore di opere di ingengo e cerco un editore disposto a pubblicare
- Vorrei imparare a scrivere libri ed ebook
- Vorrei scaricare GRATIS ebook e altro
- Cerco ebook per crescere economicamente
- Cerco ebook per crescere personalmente e professionalmente
- Voglio essere in armonia con il mio corpo e con la mia mente

































































