Underc0de

[In]Seguridad Informática => Seguridad web y en servidores => Mensaje iniciado por: fermino en Febrero 13, 2015, 01:03:07 PM

Título: Ofuscando nuestra dirección de email [ITMK Blog]
Publicado por: fermino en Febrero 13, 2015, 01:03:07 PM
Cuando estaba comenzando todo el mundo web (de programación hablando), por ahí leí que existían unas tales spiders, crawlers, que buscaban por todos lados intentando encontrar direcciones de email a las cuales spammear, leí que como protección, recomendaban no añadir la dirección a nuestra web con el clásico mailto, sino ponerlo en una imagen, etc...

Bastante tiempo después, leí por ahí un comentario sobre cómo Github hacía esto. No, no los ponía en plano, no era javascript, no amenazaba a las arañas con un bate ni nada por el estilo. Las direcciones, las ofuscaba...

Me puse a ver qué onda con esto, cómo era. En mi firefox cuando pasaba el mouse por ahí arriba la dirección se veía común y corriente, "mailto:fermino...", Inspeccionar elemento?
Nada, se veía exactamente igual:

(http://2.bp.blogspot.com/-0BjqkS2Nq7g/VN1lFlC_AvI/AAAAAAAAAHU/VfdZwOgqZgg/s1600/mailto.PNG) (http://2.bp.blogspot.com/-0BjqkS2Nq7g/VN1lFlC_AvI/AAAAAAAAAHU/VfdZwOgqZgg/s1600/mailto.PNG)

No creí que todo eso fuera dinámico, y efectivamente, con un View source, bastaba.
CTRL + F, "mailto", y...

(http://2.bp.blogspot.com/-ehLFDoDEZZc/VN1lkfAAlNI/AAAAAAAAAHc/Z8Fai3yMSyk/s1600/mailto2.PNG) (http://2.bp.blogspot.com/-ehLFDoDEZZc/VN1lkfAAlNI/AAAAAAAAAHc/Z8Fai3yMSyk/s1600/mailto2.PNG)

"Comienza con 'x', tiene dos dígitos después, por ahí hay una 'd', una 'e', una 'f'... Seh, tiene que ser hexadecimal, ¿no?".
Como, tengo que admitir, nunca había usado esa forma de insertar caracteres (en hexa, con &#x--;), me puse a googlear sobre el tema. Una buena tabla ascii (http://ascii-code.com/), y listo.

Bien, mas o menos entiendo como es ésto, ahora; ¿qué escribo?.
Ahí aprendí la utilidad de las funciones ord (http://php.net/manual/es/function.ord.php) y chr (http://php.net/manual/es/function.chr.php), de PHP.
Ord, devuelve el número ASCII del caracter dado; chr, el caracter correspondiente al número ASCII.

"Oka, puedo usar chr sobre cada caracter de la string para obtener el número... Pero, ¿cómo saco el hexa?"
Dechex (http://php.net/manual/es/function.dechex.php), le tiramos un número entero (sistema decimal), y nos devuelve la cadena correspondiente, en hexa (base 16). Sí, luego descubriría que se puede hacer "&#<numero entero, no hexa>;", y es lo mismo; pero bah, ¿no queríamos copiar a Github?

Ahora sí, "Paso sobre cada caracter chr, eso lo paso por dechex, y listo, lo añado a una cadena con el código final, ¡buenísimo! :D"...

Y algo así resultó:

Código (php) [Seleccionar]
<?php
    
function ObfuscateEmail($Email)
    {
        
$Code 'mailto:';

        
$Length strlen($Email);

        for(
$i 0$i $Length$i++)
        {
            
$Char dechex(ord($Email[$i]));
            
$Code .= "&#x{$Char};";
        }

        return 
$Code;
    }

    echo 
ObfuscateEmail('[email protected]');


https://gist.github.com/fermino/812f2731f9d92a2dfafe (https://gist.github.com/fermino/812f2731f9d92a2dfafe)

Tal vez alguno de estos días lo agarre y le añada alguna que otra cosa, la posibilidad de usar o no hexa, un script que busque en la página direcciones y las ofusque (Tal vez usando ob_ para agarrar todo antes de ser mostrado, parsearlo y hacer lo que sea necesario. Y sí, nótese que pongo todo esto acá para que no se me olvide después :P), pero bueno; espero que si llegaste acá por google, te haya servido! Y sino, también :v

Regards!
-fermino-

Fuente (mi blog :P): http://itmk-labs.blogspot.com/2015/02/ofuscando-nuestra-direccion-de-email.html (http://itmk-labs.blogspot.com/2015/02/ofuscando-nuestra-direccion-de-email.html)
Título: Re:Ofuscando nuestra dirección de email [ITMK Blog]
Publicado por: .:UND3R:. en Abril 10, 2015, 11:02:03 AM
Andaba buscando esto, tengo una tienda online (CMS) que muestra el correo electrónico en texto plano por lo cual debo sí o sí ofuscarlo ya que cada día me llega bastante correo de SPAM, aun aplicando filtros (y muchos de estos terminan enviando los formularios de contacto a SPAM).
Muchas gracias.