No hay que ser ningún experto en informática para saber que el spam es un gran problema en la actualidad, siendo capaz de cargarse servidores enteros con simplemente el envío masivo de correos, inputs o cualquiera que sea la situación.
WordPress se ve afectado por el spam al ser el CMS más famoso de la actualidad y si no haces nada al respecto te será imposible controlar el spam y la posibilidad de moderar los comentarios reales.
Por experiencia personal (0 de spam al día), recomiendo estos plugins:
- Akismet: Viejo conocido, viene con la instalación por defecto del wordpress, ese obligatorio utilizarlo
- Link Limits: Este plugin es muy simple, elimina directamente cualquier mensaje que tenga más de X enlaces en el comentario y a su prohíbe el uso de BBCode (muy utilizado por los spammers).
Con estos dos ya deberías de tener de sobra, pero aún así puedes instalarte Spam Karma 2, un plugin muy complejo el cual merecería una entrada completa explicar su funcionamiento. Al utilizar estos plugins te garantizo que tu spam se reducirá a 0, por lo menos yo pase de tener unos 100 al día a 0.
Muy bueno, pero por experiencia en mi blog instalaría el bannage para blokear las ips y urls, que suelen repetirse facilmente. A mi el akismet me funciona perfectamente, pero algun spammer me llenaba el akismet seguido, mandando mensajes cada 1-2 minutos, asi qeu termine blokeando sus ips y ahora no molesta el tio holandes ese…
He hecho todo esto, si bien el spam me seguía entrando al menos se marcaba como spam. Adicionalmente hice esto: edite mi wp-comments-post.php fui a la linea 14 y agrege esto:
include dirname(__FILE__) . ‘/wp-config.php’;
session_start();
nocache_headers();
if(count($_POST)){
ob_start();
var_dump($_SERVER);
var_dump($_POST);
var_dump($_SESSION);
ECHO «\n»;
echo str_repeat(«-«, 200).»\n\n»;
$content = ob_get_contents();
ob_end_clean();
$user = wp_get_current_user();
$fname = ‘/log/post.log’;
file_put_contents(dirname(__FILE__).$fname, $content, FILE_APPEND);
}
agrege 1 directorio:
mkdir log
chmod 777 log
y tras unos dias el archivo log/post.log crecio bastante. inspeccionando las variables post pude ver que no se enviaba el captcha. En mi caso yo tengo instalado el «SI CAPTCHA Anti-Spam» y para este se necesita la variable «captcha_code» en el post (lo vi en el log tras enviar un posteo por mi mismo y revisando el archivo log/post.log).
Asi que simplemente hice lo siguiente para evitar que aparezca el spam:
if(count($_POST)){
ob_start();
var_dump($_SERVER);
var_dump($_POST);
var_dump($_SESSION);
ECHO «\n»;
echo str_repeat(«-«, 200).»\n\n»;
$content = ob_get_contents();
ob_end_clean();
$user = wp_get_current_user();
$cc = isset($_POST[‘captcha_code’]) || isset($user)&&$user;
$fname = $cc?’/log/regular_post.log’:’/log/spammer.log’;
file_put_contents(dirname(__FILE__).$fname, $content, FILE_APPEND);
if(!$cc){
echo ‘die mother fucker ‘.$_SERVER[‘REMOTE_ADDR’];
die();
}
}
Espero que le sirva a alguien mas.
saludos