Cómo está resuelto bajo el capó — privacidad, anti-spam y persistencia sin librerías externas.
En lugar de recurrir a servicios de terceros o librerías pesadas, decidí implementar una solución propia para mammoli.ar. El objetivo fue claro desde el principio: privacidad absoluta para el usuario y robustez técnica, utilizando solo PHP y SQLite.
Acá les cuento cómo está resuelto, bajo el capó.
1. Blindaje contra bots y abusos
El spam es el enemigo número uno. Para combatirlo sin molestar a los humanos con CAPTCHAs, usé tres capas de defensa:
- Filtrado pasivo: una técnica invisible que descarta envíos automatizados sin darles pistas sobre por qué fallaron.
- Rate limiting: se limita la frecuencia de envíos por origen de conexión, sin cookies ni base de datos de sesión.
- Tokens de sesión: cada formulario genera un token único en el servidor, haciendo imposible el envío desde sitios externos o herramientas automatizadas.
2. Integridad de los datos
La seguridad es proactiva. Todo dato ingresado atraviesa un proceso estricto antes de ser procesado o almacenado:
- Sanitización: los campos de texto se limpian de cualquier contenido potencialmente malicioso.
- Validación: se rechazan formatos de email malformados.
- Consultas seguras: todos los datos se manejan mediante parámetros preparados, eliminando cualquier posibilidad de inyección SQL.
3. Privacidad y cumplimiento
La privacidad no es opcional, es parte del diseño:
- Anonimización: las direcciones IP nunca se guardan en texto plano; se usa un hash unidireccional solo para el control de frecuencia.
- Sin terceros: no hay scripts de rastreo ni servicios externos que intercepten el flujo de datos del visitante. Cumple con la Ley 25.326 de Protección de Datos Personales (Argentina).
4. Persistencia garantizada
¿Qué pasa si el sistema de notificaciones (Telegram o email) falla?
Los mensajes no se pierden. El sistema guarda cada consulta en SQLite antes de intentar cualquier aviso. Si algo falla, el mensaje queda registrado y marcado como pendiente de notificación para revisión posterior.
Stack
- Backend: PHP nativo, sin librerías externas
- Almacenamiento: SQLite en ruta protegida con acceso web denegado
- Filosofía: zero-dependency, máximo control
Este formulario es solo el comienzo. La idea es simple: hacer las cosas bien, sin depender de nadie.
Esta nota es una vista introductoria — la escribí para inaugurar este espacio. En una próxima entrega vemos cada mecanismo en detalle, con ejemplos de código y casos reales.