Evita el spam de formularios en Django con Recaptcha, Honeypot o Akismet

Enviado por christian el

Evita spam en los formularios en tu proyecto Django usando Recaptcha, HoneyPot o Akismet

Este post está relacionado y añadido a una serie que tengo sobre tu proyecto web en Django por si los quieres ver:

Si no controlas aún lo que es el spam y el concepto "captcha", lee antes este post que te lo explico un poco :)

 

Hoy os hablaré de cómo proteger (un poco) los formularios de tu sitio web ante ataques de spam y así evitar un gran número de peticiones innecesarias y peligrosas para tu sitio. Como estamos hablando en entorno Django, nos basaremos que ya tienes configurado tu proyecto con sus dependencias funcionando y que quieres protejer un formulario básico. 

Los pasos son muy sencillos, lo único que necesitas e antemano son las credenciales/apikeys de algunos de los servicios de ReCaptcha, Honeyport o Akismet que es con lo que la librería de Django trabaja. Los pasos serían:

  1. Instala el paquete django-antispam. Si usas Django >=4, revisa este post para aplicar un parche
  2. Habilita el nuevo paquete en tu fichero settins.py

    Habilitar paquetes en settings.py

  3. En el mismo fichero, configura las apikeys de los servicios que quieras usar 

    Configuración servicios

  4. Ahora nos toca definir en qué formularios queremos el anti-spam. Como en todos los posts que he creado nos basamos en usar "ModelForm", integraremos el anti-spam en el mismo:
    1. # En tu models.py, importa el anti-spam que uses. En mi caso, Recaptcha
      from antispam.captcha.forms import ReCAPTCHA
      
      # Dentro de tu clase modelFrom, añade un nuevo campo 
          # Add captcha field
          captcha = ReCAPTCHA()
  5. Finalmente, cargamos la librería en las plantillas que queramos simplemente con:
    1. # En el header de tu plantilla
      {% load recaptcha %}
  6. LISTO!!
Dinahosting: dominios y alojamiento web
My investor

Regístrate en MyInvestory tendrás un extra de 20€ ! :D

Usa el código U048395 y te llevas un regalo en tu primera inversión :)

Usa el código 22c80f y te llevas un regalo en tu primera inversión :)