Cómo evitar spam introducido con <script> en un formulario


Si en un post anterior, hablamos de cómo evitar el spam en tu página web producido por spambots directamente, en este post hablaremos de cómo evitar el spam generado por personas, dirigido a crear comportamientos inadecuados en nuestro blog mediante etiquetas HTML.

 

Estos spammers, ya que no pueden ser considerados hackers, se aprovechan de la vulnerabilidad de formularios de entrada de datos, que luego se mostrarán en la página web, como puede ser por ejemplo, un formulario para introducir comentarios en un blog o un libro de visitas. Dicha vulnerabilidad consiste en no filtrar nada del contenido de los formularios, ya que se supone una buena fe de las personas que van a comentar tu blog (sea con comentarios negativos o positivos). 

 

La solución más sencilla sobre todo en páginas web diseñadas con CMS, consiste en no dejar que nadie externo a la administración o moderación del sitio pueda postear etiquetas HTML, o por lo menos filtrar que etiquetas HTML se permiten y cuáles no. En un blog diseñado por ejemplo en PHP y HTML, puede no ser tan fácil por lo que necesitaremos una función PHP, en este caso strip_tags, que lo que hará básicamente es transformar cualquier etiqueta HTML que se introduzca en el comentario, en texto plano. 

 

Veremos un ejemplo. 

 

La forma de "trabajar" de estos spammers, suele ser primero hacer una prueba mediante etiquetas <h1> y si esta ha funcionado entonces utilizan la que para ellos es la joya de la corona, la etiqueta <script>. La etiqueta <h1>, hace que el texto introducido entre esas etiquetas, adquiera un estilo CSS de "heading 1" o "encabezado 1". Al darse cuenta de que las etiquetas HTML no están filtradas, utilizan la etiqueta <script>. La etiqueta <script> te permite introducir código de un programa del lado del cliente, como puede ser por ejemplo JavaScript (activado por defecto en todos los navegadores).

 

Por ejemplo, un spammer, colocará una etiqueta como la siguiente en el comentario del blog: 

<script>alert('Hacked By: Lammer');</script>

Mediante la etiqueta <script>, llama a la función alert de JavaScript que crea una alerta visual en forma de pop-up para mostrar un mensaje. Esto lo que haría es que cuando alguien entrase en la página de comentarios, lo primero que vería sería una ventana pop-up donde pondría "Hacked by: Lammer". Por eso estas técnicas se consideran más spam que un hack.

 

Para poder solucionar esto, iremos a nuestro documento HTML o PHP de donde se muestra la información de la base de datos, introducida por el usuario con anterioridad. Buscaremos la línea que nos conviene modificar, en este caso por ejemplo podría ser: 

<?php echo $row_listado_comentarios['Comentario']; ?>

A continuación introduciremos la función PHP strip_tags antes de la llamada a la base de datos. 

<?php echo strip_tags($row_listado_comentarios['Comentario']); ?>

Con esta función lo que hacemos es que el código que saque de la base de datos, no lo interprete como HTML si no como texto plano. De esta forma en nuestra página de comentarios ya no saldrá la molesta ventana cargada por el script, sino simplemente saldrá un comentario con el siguiente texto: 

<script>alert('Hacked By: Lammer');</script>

Evidentemente esto sólo es un parche, ya que hay que seguir borrando a mano los registros de la base de datos para que no salga ese comentario sin sentido, pero al menos el spammer no habrá logrado su objetivo, por lo que no molesta al resto de usuarios del blog, ni perjudica al diseño ni funcionamiento de nuestra página web.

 

3
3 (1 voto)
 

Comentarios

En realidad puede evitarse

En realidad puede evitarse que siempre a un correo le envíen spam?

Es muy difícil conseguir que

Es muy difícil conseguir que a un correo no llegue nada de spam. Pero siempre se puede seguir una serie de prácticas para al menos minimizar esta cantidad de spam. Tales prácticas pueden incluir:

 

  • Si se trata de un formulario, este recurso o el presentado en este otro
  • Crear filtros de correo en el servidor (por ejemplo, se puede crear una cuenta aparte o una carpeta) de forma que el posible spam se redireccione ahí. Se crean filtros con las palabras susceptibles de spam (viagra, sex, million, transaction, Hong Kong, attorney, God, investment). Estas palabras dependerán del idioma en el que suelas recibir los correos y del tipo de uso de la cuenta. Este filtro se debe mantener siempre actualizado, añadiendo las direcciones y palabras de las que sueles recibir spam. De la misma forma esta cuenta o carpeta debe revisarse para ver que no se ha colado ningún correo que no era spam.
  • Si has creado una cuenta para el filtro, regístrate con esta cuenta en páginas donde es más facil recibir spam (tiendas, foros, etc...). Si no la has creado para el filtro te puedes crear una para ese tipo de páginas.  
  • Mucho spam que a veces recibes, lleva un link debajo que te deja eliminar la suscripción a ese boletín, en los que se pueda hazlo.
  • Si por ejemplo tienes una página web y pones esa dirección para que te contacten con un "mailto", es susceptible de que lo cacen los robots y te añadan a listas de correos, mejor poner una imagen con la dirección o la dirección de forma "info(arroba)loquesea.com". 

Básicamente esas son algunas de las prácticas para minimizar el spam, pero ya te he comentado es muy difícil no recibir nada de nada. 

 

Un saludo

Excelente informacion. Te

Excelente informacion. Te agradezco mucho, no te imaginas como me has ayudado. Saludos

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.
Valid XHTML 1.0 Transitional ¡CSS Válido!