Logo de Código Facilito
  • Inicio
  • Replays
  • Iniciar sesión
  • Crear cuenta
  • Explorar cursos
  • Bootcamps
  • Precios
  • Blog

¡Califica el Curso Profesional de Desarrollo Web con Python!

Selecciona la calificación de 1 a 5 estrellas

Reporta un error

Curso Curso Profesional de Desarrollo Web con Python

Video Honeypot un método anti spam

Tipo de error

Algo salió mal al cargar el vídeo

El vídeo no pudo cargarse, hemos enviado un reporte al equipo de desarrollo, para poder solucionarlo a la brevedad.

Mientras solucionamos el problema, intenta lo siguiente para solucionar el error:

  • Recarga la página
  • Intenta reiniciar tu navegador y luego vuelve a reproducir el vídeo
  • Vacía el caché de tu navegador
  • Intenta reproducir con las extensiones del navegador deshabilitadas
  • Intenta con un navegador distinto
  • Si el problema persiste contáctanos en Discord
home Ir al inicio report_problem Reportar falla star Valorar curso

Una de las formas en las cuales podemos prevenir el spam en nuestro sitio web es utilizando una pequeña técnica conocida como honeypot (tarro de miel). Esta técnica consiste, principalmente, en colocar una pequeño señuelo con el fin que un posible atacante caiga en él y de esta forma proteger nuestro sistema.

En esta ocasión implementaremos dicha técnica a través de nuestros formularios Flask.

Lo primero que vamos a hacer es crear un nuevo campo a nuestro formulario RegisterForm, esto con la finalidad de prevenir que algún atacante intente generar miles de cuentas válidas en nuestro sitio web.

El campo será de tipo HiddenField, esto quiere decir que el usuario final no podrá visualizar dicho campo en el navegador, por lo tanto se espera que el campo llegue al servidor sin ningún tipo de valor.

from wtforms import Form,  HiddenField

class RegisterForm(Form):
    ...
    honeypot = HiddenField("", [ length_honeypot] )

Agregamos una pequeña validación a nuestro campo. Si el campo contiene algún valor levantamos un error.

def length_honeypot(form, field):
    if len(field.data) > 0:
        raise validators.ValidationError('Solo los humanos pueden completar el registro!')

La función fácilmente puede ser remplzada por una validación (por ejemplo lenght) del modulo validators.

En nuestro template renderizamos el campo. No colocaremos ningún tipo de estilo ya que el campo es hidden.

{{ render_field(form.honeypot) }}

Y listo, prácticamente con estas líneas de código podemos implementar nuestra trampa en un formulario. Si algún tipo de bot quiere generar usuarios inválidos hará la petición enviando valores para todos los campos (No sabrá diferenciar entre un campo oculto y uno visible). Al recibir un valor en el campo honeypot, un valor que no se espera por parte de un usuario normal, la validación será inválida.

  • check_circle_outline
    Módulo 1 | 17 clases

    Introducción y Fundamentos

    expand_more
  • check_circle_outline
    Módulo 2 | 7 clases

    Proyecto del curso

    expand_more
  • check_circle_outline
    Módulo 3 | 7 clases

    Formularios

    expand_more
  • check_circle_outline
    Módulo 4 | 6 clases

    Modelos

    expand_more
  • check_circle_outline
    Módulo 5 | 4 clases

    Validaciones

    expand_more
    • done_all

      Clase 1

      Validaciones mediante funciones

    • done_all

      Clase 2

      Honeypot un método anti spam

    • done_all

      Clase 3

      Validaciones mediante métodos

    • done_all

      Clase 4

      Método validate

  • check_circle_outline
    Módulo 6 | 7 clases

    Autenticación de usuarios

    expand_more
  • check_circle_outline
    Módulo 7 | 10 clases

    CRUD - Crear, Leer, Actualizar y Eliminar

    expand_more
  • check_circle_outline
    Módulo 8 | 3 clases

    Servidor de correos

    expand_more
  • check_circle_outline
    Módulo 9 | 5 clases

    Extras

    expand_more

Honeypot un método anti spam

arrow_back Siguiente arrow_forward
Curso Profesional de Desarrollo Web con Python