Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

17 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
martes, 24 de octubre de 2006
Otra técnica ampliamente utilizada es camuflar en el mensaje las palabras susceptibles de ser interceptadas por filtros antispam en cliente o servidor. Esto viene debido a la aparición de software capaz de determinar, en función del contenido del mensaje, cuándo se trataba de spam.
Conceptualmente es bastante simple: si en el cuerpo de un mensaje aparece la palabra "viagra", ya hay bastantes probabilidades de que se trate de un correo basura; si, además, en el cuerpo aparecen otras expresiones ("barato", "compre ahora", etc.), las probabilidades crecen bastante, ¿está claro, no?

Obviamente, los spammers debieron darse cuenta de este detalle, así que rápidamente dieron con una técnica, simple donde las haya, para esquivar este contratiempo: separar las letras que componen las palabras conflictivas con espacios o caracteres invisibles, de forma que los parsers no pudieran encontrar esas cadenas en el cuerpo de los mensajes.

Así, he encontrado distintas variantes de esta técnica; la primera de ellas se utiliza tanto en mensajes HTML como en texto plano, mientras que las dos siguientes son propias de los mensajes enriquecidos:

  • separar con espacios, es decir, utilizar "V I A G R A" en vez de "viagra", por ejemplo.
  • separar con entidades, como , que generará en pantalla el mismo efecto que el punto anterior, pero con la diferencia de que no puede ser eliminado realizando trimming a los textos. El ejemplo anterior quedaría codificado como "V I A G R A". Obviamente, es bastante más difícil encontrar así un texto que si está incluido directamente en el contenido. Existen gran cantidad de entidades a utilizar cuya visualización no afecta a la lectura del texto, por lo que las posibilidades son muchas.
  • separar con tags, aprovechando que los navegadores o visores de HTML ignorarán las etiquetas desconocidas. Por ejemplo, podríamos usar "V<xx />I<xx />A<xx />G<xx />R<xx />A", lo que complica un poco su detección.
  • separar con otros caracteres, que aunque dificultan algo la lectura por parte del cliente potencial, más la complican para los sistemas de búsqueda de cadenas de texto. Supongamos algo así: V-I-A-G-R-A. Seguimos leyendo Viagra, ¿verdad? ¿Y si decimos V_I_A_G_R_A? ¿O V.I.A.G.R.A? ¿A que hay cientos (miles) de combinaciones?
El próximo día que escriba sobre el tema hablaré de otra técnica simple de camuflaje, la codificación del mensaje.

Aún no hay comentarios, ¡sé el primero!