diego sevilla’s weblog
it is better to remain silent and be thought a fool,
than to open your mouth and remove all doubt -- groucho marx

24/4/2007

WP-Morph version 1.6

Filed under: english, español, blogging, código/code, free software/software libre — Diego Sevilla @ 0:47 — In English

WP-Morph, my world-famous anti-spam Wordpress plugin, needs an update for PHP5. While updating my server, I noticed that the plugin didn’t work. Damn PHP! I hate it. Really. I’ve put a new version of the WP-Morph plugin that works with PHP5 here. You have installation instructions too.

WP-Morph, mi famoso plugin anti-spam conocido en el mundo mundial, necesita ser actualizado para PHP5. Mientras actualizaba mi servidor, me he dado cuenta de que no funcionaba con PHP5. ¡Maldito PHP! Lo odio. En serio. He puesto una nueva versión del plugin WP-Morph que funciona con PHP5. También hay instrucciones de instalación.

27/2/2007

Problemas con los comentarios

Filed under: español, blogging — Diego Sevilla @ 18:28 — In English

Parece que últimamente no se podía introducir comentarios en el blog dependiendo de qué browser se usaba. Esto estaba causado por un error que cometí al añadir ciertas cosas al blog… Perdonad. Ya lo he solucionado. Al final no tenía nada que ver con el plugin wp-morph.

30/12/2005

¿Anti-spam? ¡¡WP-Morph 1.5!!

Filed under: english, español, blogging, código/code — Diego Sevilla @ 1:10 — In English

Al actualizar a WordPress 2 me di cuenta que empezaron a llegar correo spam. Me di cuenta entonces de que hay que cambiar WP-Morph mínimamente. También ahora WP-Morph sólo actúa en comentarios, no en pingbacks ni en trackbacks. He aquí la nueva versión 1.5 con sus instrucciones de instalación:

* instrucciones

* Plugin

* Directorio

When updated to WordPress I started receiving spam again. I realized I had to change WP-Morph a little bit to cope with this new version. Also, WP-Morph now only checks comments, neither pingbacks nor trackbacks. Here is version 1.5:

* Installation instructions

* Plugin

* Plugin directory

1/7/2005

WP-Cache

Filed under: español, blogging — Diego Sevilla @ 0:34 — In English

Magnífico plugin para WordPress, y además ¡hecho por un Español, Ricardo Galli! Convierte a WordPress en un servidor casi estático, en el que se mantienen muchas páginas generadas de antemano. El problema es que no funciona muy bien con WP-Morph. Intentaré arreglarlo para la siguiente versión. Lo malo es que no soy muy bueno en PHP, por lo que le he enviado un correo a Ricardo para ver si se le ocurre la mejor manera de hacer funcionar ambos.

14/6/2005

WP-Morph 1.2

Filed under: english, blogging, código/code — Diego Sevilla @ 20:40 — In English

WP-Morph is now on version 1.2. You can download it here. And read the README. Even you can browse its source code This version has some improvements:

* More kind error message.
* $rnd_val is calculated automatically and stored in wp’s internal
database. No user interaction or configuration is needed now.
(Thanks to Denis de Bernardy <denis .at.semiologic.com> for suggesting
this.)
* Little change in the javascript code in order to prevent possible
overflows.

Please, report any problems you encounter in it, as it is running this weblog.

16/5/2005

WP-Morph 1.1

Filed under: english, español, blogging, código/code — Diego Sevilla @ 21:35 — In English

Update: Version 1.2 is out

(English version below)

*LEEME de WP-Morph*

WP-Morph es un plugin anti-spam para WordPress. Características:

* No requiere de ningún “capcha”. El usuario no tiene que introducir
ningún código extraño ni se entera de nada del proceso.
* Se requiere JavaScript en el browser.
* Los spammers tendran que interpretar el código JavaScript de la
página para poder enviar comentarios. Hasta ahroa no conozco a
ningún programa spammer que haya sido capaz de interpretar también
el código JavaScript de la página.

*Instalación*

* Descarga la última versión del plugin de aquí
* Edita las líneas siguientes de wp-morph.php y pon un número al azar. Es importante que ese número sea diferente, ya que ser el secreto de tu sitio web que los spammers no sabrán:

////// Config values:
// * rnd_val is an integer greater than 0 and less than 1,000,000
// * form_valid_minutes is the number of minutes that the form is valid
//                      since the form appears in the screen till the user
//                      pushes the "submit" button. (15 minutes by default).
$rnd_val = xxxx;
$form_valid_minutes = 15;
////// End of config values.

* Copia wp-morph.php en el directorio de plugins de WordPress (normalmente WP-ROOT/wp-content/plugins/ ).
* Ve al menú “Plugins” de la administración de WordPress.
* Activa el plugin “WP-Morph”.

*Change Log*

v1.1:

* Generación de valores mejorada. Ahora los formulario expiran después de un número de minutos configurado por parte del usuario del plugin.
* Muestra que el formulario está protegido por WP-Morph.

v1.0:

* Versión inicial.

*(English version)*

*README for WP-Morph*

WP-Morph is an anti-spam plugin for WordPress. Features:

* No capcha. The user don’t have to enter any additional code.
* JavaScript support required in the browser.
* Spammers would have to interpret the JavaScript in the page to be able to submit comments. As far as I know, no one spammer in the world process a page including the JavaScript.

*Installation*

* Download the lattest version of the plugin from here.
* Edit the following lines (in wp-morph.php) to put a random value of your own:

////// Config values:
// * rnd_val is an integer greater than 0 and less than 1,000,000
// * form_valid_minutes is the number of minutes that the form is valid
//                      since the form appears in the screen till the user
//                      pushes the "submit" button. (15 minutes by default).
$rnd_val = xxxx;
$form_valid_minutes = 15;
////// End of config values.

* Copy wp-morph.php in the WordPress plugin directory (normally WP-ROOT/wp-content/plugins/ ).
* Go to the “Plugins” menu of the WordPress Admin console.
* Activate the “WP-Morph” plugin.

That’s it!! Bye, bye, spam!!

*Change Log*

v1.1:

* Improved the generation of the values. Now forms expire at some user-configured time.
* Show that the form is protected using WP-Morph.

v1.0:

* Initial release.

WP-Morph citado

Filed under: General, español, blogging — Diego Sevilla @ 19:37 — In English

Mientras veo que se ha reactivado la discusión sobre WP-Morph/WP-Hashcash en los foros de WordPress, veo también que Elliott Bäck ha sacado su versión 2.0 de WP-Hashcash, y que cita a WP-Morph como trabajo derivado :) ¡Muy bien!

En cuanto a la versión 2.0, tengo que leer el código, pero parece que Elliott no tiene mucha idea de seguridad informática. Es verdad que quizá ningún _spammer_ haya hecho un código para saltarse su plugin, pero es teóricamente muy sencillo, como explico en la discusión de la entrada de los foros de WordPress.

Mientras tanto, voy a ver si termino la versión 1.1 de mi WP-Morph, que arreglará el punto 2 de los fallos que le estuvimos sacando al plugin por aquí.

10/5/2005

WP-Morph 1.1 se acerca

Filed under: español, blogging, código/code — Diego Sevilla @ 23:52 — In English

Hace un tiempo desarrollé WP-Morph. Hace poco hice una búsqueda por Internet y encontré que había gente que incluso lo usaba con éxito. Así que me he propuesto sacar una nueva versión que corrija uno de los tres puntos débiles que tenía la implementación, que ya encontramos en otras noticias (aquí y aquí). El objetivo de esta versión 1.1 es solucionar una de las tres maneras de crackear el plugin. A saber: que no se puedan usar valores precalculados del formulario (lo que estaba marcado con el punto (2) aquí). Pronto os mostraré el código y cómo lo voy a hacer.

WordPress 1.5.1

Filed under: español, blogging — Diego Sevilla @ 23:25 — In English

Siguiendo los ya conocidos sencillísimos pasos de actualización de Wordpress, he actualizado a la versión 1.5.1 sin grandes problemas. El proceso todavía no es totalmente transparente y se podría mejorar, pero la cosa va cada vez mejor. Ahora probaré WP-Morph para ver si funciona…

7/5/2005

Una segunda mirada a WP-Morph

Filed under: General, español, blogging — Diego Sevilla @ 12:42 — In English

Después de dejar el plugin en la red, he sentido curiosidad por saber quién lo estaba usando (si había alguien). Ha habido algunos comentarios de personas que obviamente lo estaban usando y parece que les iba bien, de lo cual estoy muy contento. Poniéndome a pensar un poco, en realidad esta es la segunda vez que alguien utiliza un código mío, lo cual para un informático es una maravilla: pensar que en otros ordenadores por el mundo cada vez que alguien hace una petición el ordenador ejecuta código tuyo… En fin, perdonad la ida de olla :)

Pues nada, haciendo una búsqueda por Google me encuentro, aparte de la discusión en BloggingPro y de que alguien también lo comentó en los forums de WordPress, hay varios sitios usando WP-Morph: aulablog21, The ePiC rAmblInGs of JustIsengard, coffelius (no lo usa, pero lo comenta), backdraft, R3ivax i el seu WEBLOG, idioteca, the power of mind.

En definitiva, estoy contento :)

12/4/2005

WP-Morph en el repositorio de plugins de Wordpress

Filed under: español, blogging, código/code — Diego Sevilla @ 12:25 — In English

Pues sí. ¡Qué bien! Me han añadido al repositorio de plugins de Wordpress. He escrito una página en el Wiki explicándolo y lo he dejado disponible para descargar la última versión. Me ha sorprendido gratamente el formato de texto de este Wiki, que no había tenido ocasión de probar.

3/4/2005

Solución al acertijo sobre WP-Morph

Filed under: español, código/code — Diego Sevilla @ 21:05 — In English

El otro día lancé un reto basado en un plugin anti-spam que he realizado: WP-Morph. Dije que yo había encontrado tres maneras de romper el plugin anti-spam de forma automática. Una de ellas era trivial: que el spammer tuviera un intérprete JavaScript, algo difícil, pero posible. Otra de ellas la descubrió Juanjo en este comentario del weblog. La idea es que en cualquier momento, un par de valores, el calculado por el código javascript y el dado por md5, son válidos para siempre. Así que precalculando esos valores se pueden utilizar siempre para enviar un comentario. Hay varias formas de tratar eso, y lo haré para las próximas versiones del plugin. Resumiendo:

1. Que el spammer tenga un intérprete JavaScript.
2. Precalcular valores válidos del formulario, y
3. ¿Cuál es el tercero?

Este no lo descubrió nadie. La idea es mirar una segunda vez el código. Ese código JavaScript bien podría ser un código en C o casi en perl… Lo bueno de esos lenguajes como perl es que son capaces de interpretar código en tiempo de ejecución, y todos ellos incorporan una función exec que es capaz de interpretar código en tiempo de ejecución. ¿Por qué perl? Bueno, la mayoría de los spammers utilizan perl o python o ruby como lenguajes de scripting para lanzar comentarios spam, así que es natural proponer esta solución.

Sin embargo, el código JavaScript no es exactamente código Perl. Por ejemplo veamos los cambios que hay que hacer:

1. El valor calculado se tiene que extraer, y el código JavaScript que rellena el formulario no significa nada. Sólo es necesario el valor final.
2. Las variables en perl llevan añadido un “$” delante, así que hay que hacer esta transformación.

Imaginemos que somos capaces de extraer el código que hace el cálculo:

v0=1368;v1=1581;v2=927;v3=802;v4=1280;v5=968;v6=1745;v7=1147;v8=661;v9=1376;v10=2086;v11=1539;v12=165;v13=1380;v14=1407;v15=114;if ( v15 > 2059)
                                    { v7 = v15; }if ( v15 > 1735)
                                    { v10 = v12; }if ( v11 > 1503)
                                    { v12 = v8; }v10=(v13-v5)%2514;v4=Math.abs(v4);
                                   v4%=26; while (v4--) {
                                   v0++; }v0=(v8+v12)%2514;eElement.value = (v0+v1+v2+v3+v4+v5+v6+v7+v8+v9+v10+v11+v12+v13+v14+v15)%2514;

Así, las modificaciones que hay que hacer sobre ese código son:

1. s/v([0-9])+/\$v$1/g (sustituye todas las “vxx” con “$vxx” al estilo perl).
2. s/Math\.abs/abs/g (en perl la función es “abs”).
3. s/eElement.value/\$v/g (el valor final en $v).
4. Añadir al final: print “$v”.

Resultado:

$v0=1368;$v1=1581;$v2=927;$v3=802;$v4=1280;$v5=968;$v6=1745;$v7=1147;$v8=661;$v9=1376;$v10=2086;$v11=1539;$v12=165;$v13=1380;$v14=1407;$v15=114;if ( $v15 > 2059)
{ $v7 = $v15; }if ( $v15 > 1735)
{ $v10 = $v12; }if ( $v11 > 1503)
{ $v12 = $v8; }$v10=($v13-$v5)%2514;$v4=abs($v4);
$v4%=26; while ($v4--) {
$v0++; }$v0=($v8+$v12)%2514;$v = ($v0+$v1+$v2+$v3+$v4+$v5+$v6+$v7+$v8+$v9+$v10+$v11+$v12+$v13+$v14+$v15)%2514;
print $v;

y la salida: 957.

Voilà. He ahí la tercera solución. Ni siquiera se necesita una función md5 (que perl también trae de fábrica incluso).

30/3/2005

Un reto: crackear mi plugin

Filed under: español, blogging, código/code — Diego Sevilla @ 15:35 — In English

Crackear está bien. Sobre todo si se hace para aprender y los conocimientos se aplican para hacer el bien. Os propongo un mini-reto. Hace un tiempo desarrollé un plugin anti-spam para Wordpress (WP-Morph). No es porque lo haya hecho yo, pero es la caña :) . El resultado: ni un spam desde que lo puse. Incluso mostré en mi weblog el código fuente y también lo discutieron en BloggingPro. El único requisito del plugin es tener activo javascript para enviar comentarios. Las ventajas: ni un spam, por lo que no hace falta moderar los comentarios.

¿Cómo se consigue eso? Pues muy sencillo. El plugin genera para cáda página un código JavaScript aleatorio que el browser tiene que interpretar para conseguir un resultado. El browser entonces tiene que devolver el resultado de ejecutar el javascript como un campo más del formulario de comentario. Por ejemplo, un código al azar generado es el siguiente:

function go_anti_spam()
{
        eElement = document.getElementById("chk");
        if(!eElement){ return false; }
        else
        {
 v0=1368;v1=1581;v2=927;v3=802;v4=1280;v5=968;v6=1745;v7=1147;v8=661;v9=1376;v10=2086;v11=1539;v12=165;v13=1380;v14=1407;v15=114;if ( v15 > 2059)
                                    { v7 = v15; }if ( v15 > 1735)
                                    { v10 = v12; }if ( v11 > 1503)
                                    { v12 = v8; }v10=(v13-v5)%2514;v4=Math.abs(v4);
                                   v4%=26; while (v4--) {
                                   v0++; }v0=(v8+v12)%2514;eElement.value = (v0+v1+v2+v3+v4+v5+v6+v7+v8+v9+v10+v11+v12+v13+v14+v15)%2514;
            return true;
        }
}

El gran problema que les plantea esto a los spammers es que tendrían que hacer que sus programas de envío de comentarios automáticos supieran interpretar JavaScript… Hasta este punto de sofisticación no llegan. Sin embargo, aquí viene el reto:

Pensando se me han ocurrido al menos tres formas de saltarse el plugin de una forma más o menos sencilla (o al menos, en teoría). Una de ellas ya os la he dicho: Que los spammers tengan un programa que interprete también el javascript de la página (harto improbable).

¿Cuáles son las otras dos formas? Grandes premios para los acertantes. :D

16/3/2005

WP-Morph en Blgging-Pro

Filed under: español, blogging, código/code — Diego Sevilla @ 14:58 — In English

Pues parece que ha habido también discusión en BloggingPro. La gente pregunta las dos cuestiones principales:

* En qué se diferencia de WP-HashCash (ahí lo explico).
* ¿Qué pasa con los usuarios que tienen JavaScript deshabilitado? No pueden enviar comentarios, básicamente…

A ver qué aceptación tiene. Veré si lo envío al repositorio de plugins de WordPress.

Código fuente de WP-Morph

Filed under: english, español, blogging, código/code — Diego Sevilla @ 0:46 — In English

Aquí os pongo el código fuente del plugin WP-Morph anti-Spam para Wordpress, que se puede descargar aquí. Me gustaría que me contárais qué os parece. Después comentaré los puntos más importantes e interesantes:


<?php // -*- mode: php -*- vim: expandtab ts=8 sw=8
/*
Plugin Name: WP-Morph
Plugin URI: http://wordpress.org/#
Description: Fool spammers by creating a complicated javascript program to be executed by a real browser.
Author: Diego Sevilla Ruiz
Version: 1.0
Author URI: http://neuromancer.dif.um.es/blog
Id: $Id: wp-morph.php 500 2005-03-15 20:39:58Z dsevilla $
*/

/// Put some random value here!!!
// Greater than 0, and less than 1000000
$rnd_val = xxx;
/// Put some random value here!!!

// Check the result through the MD5 sum.
function morph_check_md5($comment) {
    global
$rnd_val;
    
    
// Check the fast check :)
    
if (’spammers_go_home’ == trim(strip_tags($_POST[‘checkpoint’])) )
    {
        
// Check that md5 of check is the same than produced
        
$v = $_POST[‘calc_value’];
        
        
// This value cannot be known by spammers
        
$v += $rnd_val;
        
        
$v = md5($v);
        
        if (
$v == $_POST[‘result_md5′])
        {
            return
$comment;
        }
    }
    
    die(
“Spammer, go home” );
}

add_filter(‘post_comment_text’, ‘morph_check_md5′);

// Output form actions
function morph_output_form_items($page) {
    global
$rnd_val;
    
    
// We have three arrays of random size. Complicated calculus can
    // be made here.
    // 6 to 20 variables
    
$nvars = rand(6,20);
    
$maxval = rand(1000,10000);
    
$vvv = array();
    
    for (
$i = 0 ; $i < $nvars; $i++)
    {
        
$v = rand(1,$maxval - 1);
        
$js_str .= ‘v’ . $i . ‘=’ . $v . ‘;’;
        
$vvv[$i] = $v;
    }
    
    
$nops = rand(3,20);
    for (
$i = 0; $i < $nops; $i++)
    {
        
// Operator
        
$op = rand(0,5);
        
        
// Select two variables and result, random
        
$v1 = rand(0, $nvars - 1);
        
$v2 = rand(0, $nvars - 1);
        
$v3 = rand(0, $nvars - 1);
        
        switch(
$op)
        {
            
// +
            
case ‘0′:
            
$vvv[$v3] = ($vvv[$v1] + $vvv[$v2]) % $maxval;
            
$js_str .= ‘v’.$v3.‘=(v’.$v1
            
. ‘+v’.$v2.‘)%’. $maxval .‘;’;
            break;
            
// -
            
case ‘1′:
            
$vvv[$v3] = ($vvv[$v1] - $vvv[$v2]) % $maxval;
            
$js_str .= ‘v’.$v3.‘=(v’.$v1
            
. ‘-v’.$v2.‘)%’. $maxval .‘;’;
            break;
            
// *
            
case ‘2′:
            
$vvv[$v3] = ($vvv[$v1] * $vvv[$v2]) % $maxval;
            
$js_str .= ‘v’.$v3.‘=(v’.$v1
            
. ‘*v’.$v2.‘)%’. $maxval .‘;’;
            break;
            
            
// if, >
            
case ‘3′:
            
$v4 = rand (1, $maxval - 1);
            
            
$js_str .= ‘if ( v’ . $v1 . ‘ > ‘. $v4 . ‘)
            { v’
. $v2 . ‘ = v’ . $v3 . ‘; }’;
            
            if (
$vvv[$v1] > $v4)
            {
                
$vvv[$v2] = $vvv[$v3];
            }
            break;
            
            
// if, <
            
case ‘4′:
            
$v4 = rand (1, $maxval - 1);
            
            
$js_str .= ‘if ( v’ . $v1 . ‘ < ‘. $v4 . ‘)
            { v’
. $v2 . ‘ = v’ . $v3 . ‘; }’;
            
            if (
$vvv[$v1] < $v4)
            {
                
$vvv[$v2] = $vvv[$v3];
            }
            break;
            
            
// while
            
case ‘5′:
            
$v4 = rand (1, 100);
            
            
// Quick and dirty check
            
if ($v1 == $v2)
            break;
            
            
$js_str .= ‘v’. $v1 .‘=Math.abs(v’.$v1.‘);
            v’
. $v1 .‘%=’. $v4 .‘; while (v’.$v1.‘–) {
            v’
. $v2.‘++; }’;
            
            
// Calc the final value
            
$vvv[$v1] = abs ($vvv[$v1]);
            
$vvv[$v2] += $vvv[$v1] % $v4;
            
$vvv[$v1] = -1;
            break;
        }
        
    }
    
    
$final_val = 0;
    
    
$js_str .= “eElement.value = (”;
    for (
$i = 0 ; $i < $nvars; $i++)
    {
        if (
$i != 0)
        {
            
$js_str .= ‘+’;
        }
        
$js_str .= ‘v’ . $i;
        
$final_val += $vvv[$i];
    }
    
    
    
$js_str .= ‘)%’. $maxval.‘;’;
    
    
$final_val %= $maxval;
    
    
//$js_str .= ‘// ‘.$final_val;
    
    // Add the secret quantity
    
$final_val += $rnd_val;
    
    
// Calc the md5 of the value
    
$md5_value = md5($final_val);
    
    
// Write in hidden field
    
$page = str_replace(‘<input type=”hidden” name=”comment_post_ID”‘,
    
‘<input type=”hidden” name=”checkpoint” value=”spammers_go_home” />
    <input type=”hidden” name=”result_md5″ value=”‘
    
. $md5_value . ‘” />
    <input type=”hidden” id=”chk” name=”calc_value” value=”" />
    <input type=”hidden” name=”comment_post_ID”‘
, $page);
    
    
// The form action
    
$page = str_replace(‘<form’,
    
‘<form onsubmit=”go_anti_spam();” ‘,
    
$page);
    
    
// The jscript
    
$page = str_replace(‘</head>’, ‘<script type=”text/javascript”>
    
    function go_anti_spam()
    {
        eElement = document.getElementById(”chk”);
        if(!eElement){ return false; }
        else
        {
            ’
.$js_str.
            return true;
        }
    }</script></head>’
, $page);
    
    return
$page;
}

function morph_call_output_items() {
    
ob_start(‘morph_output_form_items’);
}

// Now we set that function up to execute when the wp_head action is called
add_action(‘wp_head’, ‘morph_call_output_items’);

?>

15/3/2005

WP-Morph 1.0

Filed under: english, español, blogging, código/code — Diego Sevilla @ 21:33 — In English

*Nueva versión 1.1 aquí.*
*New version 1.1 here.*

(English version below)

WP-Morph es un plugin anti-spam para WordPress. Características:

* No requiere de ningún “capcha”. El usuario no tiene que introducir ningún código extraño ni se entera de nada del proceso
* Se requiere JavaScript en el browser.
* Los Spammers tendrían que interpretar el código JavaScript de la página para poder enviar comentarios. Hasta ahroa no conozco a ningún programa spammer que haya sido capaz de interpretar también el código JavaScript de la página.

Instalación
———–

* Descarga el fichero ZIP wp-morph.zip y descomprímelo.
* Edita las líneas siguientes de wp-morph.php y pon un número al azar. Es importante que ese número sea diferente, ya que será el secreto de tu sitio web que los spammers no sabrán:


/// Put some random value here!!!
// Greater than 0, and less than 1000000
$rnd_val = xxx;
/// Put some random value here!!!

* Copia wp-morph.php en el directorio de plugins de WordPress (normalmente WP-ROOT/wp-content/plugins/).
* Ve al menú “Plugins” de la administración de WordPress.
* Activa el plugin “WP-Morph”.

¡¡Y ya está!! ¡¡Adios spam!!

Si tienes alguna pregunta/comentario/cuestión, no dudes en contactar conmigo.

English version:

WP-Morph is an anti-spam plugin for WordPress. Features:

* No capcha. The user don’t have to enter any additional code.
* JavaScript support required in the browser.
* Spammers would have to interpret the JavaScript in the page to be able to submit comments. As far as I know, no one spammer in the world process a page including the JavaScript.

Installation
————

* Download and decompress the ZIP file wp-morph.zip.
* Edit the following lines (in wp-morph.php) to put a random value of your own:


/// Put some random value here!!!
// Greater than 0, and less than 1000000
$rnd_val = xxx;
/// Put some random value here!!!

* Copy wp-morph.php in the WordPress plugin directory (normally WP-ROOT/wp-content/plugins/).
* Go to the “Plugins” menu of the WordPress Admin console.
* Activate the “WP-Morph” plugin.

That’s it!! Bye, bye, spam!!

If you have questions/comments, please contact me.

Ahora sí, el Anti-Spam definitivo para WordPress: WP-Morph

Filed under: español, blogging — Diego Sevilla @ 2:33 — In English

Pues sí… Si sois curiosos y mirais al código fuente de la página descubriréis que he añadido cierto código JavaScript con muy mala leche para luchar contra los spammers. Ventaja: Ahora sí que no se me van a colar, y sigue sin hacer falta poner ningún campo adicional. Desventaja: Necesita JavaScript. ¿Es eso un problema? Realmente no lo tengo claro, por favor, ¿comentarios?

Hoy es muy tarde. Ya mañana explicaré qué he hecho y cómo permite eliminar los spammers. He utilizado como ejemplo el plugin “WP-Hashcash“, aunque este, os lo aseguro, es mucho más simple y no hace falta modificar nada de Wordpress: sólo instalar el plugin en el directorio de plugins y activarlo.

Creative Commons License
This work is licensed under a Creative Commons License.
EWWV  AWStats  Site Meter 24 queries. 0.182 seconds. Powered by WordPress
406021 email messages processed in this box. 10858 were spam

0