Alberto Carozzo collaboratore di GiveMeAChance editoria on line dai un futuro alle tue passioni
GiveMeAChance Editoria Online


GiveMeAChance Editoria Online


Dai un futuro alle tue passioni

'' Il coraggio è ciò che serve per alzarsi e prendere la parola, ma è anche indispensabile per rimanere seduti ad ascoltare. (Winston Churchill) '' - - '' Saggezza è sapere che cosa fare, Virtù è farlo. (David Starr Jordan) '' - - '' Quando non c'è vento, rema. (proverbio portoghese) '' - - '' Se ti barrichi, nessuno può entrare, ma neanche tu puoi uscire. (Gaia Grossi) '' - - '' Ciò che conta non è ciò che diciamo, ma quello che il nostro interlocutore capisce. (Gianfranco Livraghi) '' - - '' Puoi comprare il tempo di una persona, la sua presenza fisica in un dato posto, persino un certo numero di movimenti muscolari all'ora. Ma non puoi comprare l'entusiasmo. Non puoi comprare la lealtà. Non puoi comprare la devozione. Quelle te le devi guadagnare. (Clarence Francis) '' - - '' Se vuoi dirigere un'orchestra, devi voltare le spalle alla folla. (in un biscotto cinese della fortuna) '' - - '' Avere a cuore il prossimo - i più capaci ed i meno capaci al servizio degli altri - è la pietra su cui si edifica una buona società. (Robert K. Greenleaf - HBS) '' - - '' La cosa migliore per la maggior parte di noi, nonostante i rischi, è lanciarsi nel futuro, e farlo il più presto possibile. (John P. Kotter - HBS) '' - - '' La scoperta consiste nel guardare le stesse cose di tutti gli altri, ma vedervi qualcosa di diverso. (Albert Szent-Gyorgyi, due volte premio Nobel) '' - - '' Nel mondo del lavoro, se vuoi andare da qui a lì non provarci con una linea retta: nessuna ti ci porterà. (William Ahmanson) '' - -

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''


Strumenti


 Stampa questa pagina di GiveMeAChance Editoria Online  Invia questa pagina di GiveMeAChance Editoria Online ad un amico  Registra GiveMeAChance Editoria Online nei tuoi bookmark

Newsletter e Omaggio

Siamo su Internet Magazine

 






Out of Matrix


Io e Mr. Parkinson


R.I.D.E.


Fuorifuoco


Delitto a Cinecittà


Il sale sulla coda


Il Marito Virtuale


Babilonia


Lo Stalinista


L'Albero degli Zecchini


Marozia La Papessa


Ankhenaton Il Profeta di Dio


Il Vescovo di Lusaka


Una donna chiamata Gesù


Social network
per il non profit


La tua Azienda sul Web


Come diventare ...


Il Metodo SFERA nel tennis


Mai dire effetto...


Ricette per donne ...


La Divin Dieta ...