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.
Comentarios
En realidad puede evitarse
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:
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
Enviar un comentario nuevo