Hemos visto ya varios modos de combatir el spam de comentarios y hoy vamos a ampliar nuestro arsenal con un truco que activaremos en el fichero functions.php
de nuestro tema activo, con lo que es totalmente exportable a otros sitios sin modificar configuración alguna.
Lo único que tienes que hacer es añadir este código:
function in_comment_post_like($string, $array) { foreach($array as $ref) { if(strstr($string, $ref)) { return true; } } return false; } function drop_bad_comments() { if (!empty($_POST['comment'])) { $post_comment_content = $_POST['comment']; $lower_case_comment = strtolower($_POST['comment']); $bad_comment_content = array( 'viagra', 'hydrocodone', 'hair loss', '[url=http', '[link=http', 'xanax', 'tramadol', 'russian girls', 'russian brides', 'lorazepam', 'adderall', 'dexadrine', 'no prescription', 'oxycontin', 'without a prescription', 'sex pics', 'family incest', 'online casinos', 'online dating', 'cialis', 'best forex', 'amoxicillin' ); if (in_comment_post_like($lower_case_comment, $bad_comment_content)) { $comment_box_text = wordwrap(trim($post_comment_content), 80, "\n ", true); $txtdrop = fopen('/var/log/httpd/wp_post-logger/nullamatix.com-text-area_dropped.txt', 'a'); fwrite($txtdrop, " --------------\n [COMMENT] = " . $post_comment_content . "\n --------------\n"); fwrite($txtdrop, " [SOURCE_IP] = " . $_SERVER['REMOTE_ADDR'] . " @ " . date("F j, Y, g:i a") . "\n"); fwrite($txtdrop, " [USERAGENT] = " . $_SERVER['HTTP_USER_AGENT'] . "\n"); fwrite($txtdrop, " [REFERER ] = " . $_SERVER['HTTP_REFERER'] . "\n"); fwrite($txtdrop, " [FILE_NAME] = " . $_SERVER['SCRIPT_NAME'] . " - [REQ_URI] = " . $_SERVER['REQUEST_URI'] . "\n"); fwrite($txtdrop, '--------------**********------------------'."\n"); header("HTTP/1.1 406 Not Acceptable"); header("Status: 406 Not Acceptable"); header("Connection: Close"); wp_die( __('bang bang.') ); } } } add_action('init', 'drop_bad_comments');
Puedes, por supuesto, añadir o quitar palabras y/o expresiones tras el array
llamado $bad_comment_content para personalizarlo según tu necesidad.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
muy interesnate, lo pondré en practica y les comento a ver que tal me fue…
Me late que desde la linea 34 a la 41 esta de mas. por que no todos los servidores tendran esta estructura de directorios /var/log/httpd/wp_post-logger/ asi que guardarlo en un log creo que esta demas. salvo que seas un amante de los log :D. aunque para mi la solucion mas facil seria lograr cambiar el nombre del wp-comments-post.php pero tendrias que hacer varias modificaciones. seria bueno que wordpress implemente una funcionalidad para poder cambiarlo de nombre sin afectar la funcionalidad de wordpress.
PD: wp-comments-post.php es el archivo que la mayoria de los spam estan dirigidos. si se cambia de nombre no sufriremos un ataque tan seguido.
muy bueno hoy que me atacaron con 16 comentarios de spam en este dia 27 de enero del 2010