📅 Day 123 — Contact Forms, Validation, and Anti-Spam Thinking
🔄 Topic
Reviewing the contact flow as both a conversion path and an abuse target.
🎯 Goal
Understand how form validation and abuse controls reduce noise and protect a small public website.
🛠 What I Did
I looked at the contact and order-related flow as a public input surface. Even a simple form can be abused by bots, spam campaigns, malformed input, or automated submissions. The Farina project uses structured validation thinking with React Hook Form and Zod, plus practical anti-spam ideas such as honeypot fields, timing checks, and cooldown protection. The point was not to pretend this is enterprise-grade security. The point was to reduce obvious abuse while keeping the form usable.
Main areas covered:
- field validation
- clear error messages
- honeypot field
- submission timing checks
- cooldown protection
- safe handling of user input
🔗 Key Cybersecurity Connections
Forms matter because user input is where many web problems start. Even static frontend projects need to think about abuse paths before adding backend services or integrations.
🔍 Investigation Questions
- Which fields accept user input?
- What input is required?
- What happens with malformed input?
- Can bots submit the form repeatedly?
- Are errors helpful without leaking implementation details?
🚨 Detection Opportunities
Potential monitoring ideas:
- submission spikes
- many failed validation attempts
- honeypot field populated
- rapid repeated submissions
- same IP or user agent abusing the form
Example:
project=farina-farm-website
change_type=public_website_update
risk_area=repository_deployment_or_public_input
triage=review_change_intent_and_validate_build
🧭 MITRE ATT&CK Techniques
Possible mappings depending on confirmed behavior:
- T1190 — Exploit Public-Facing Application
- T1110 — Brute Force
- T1595 — Active Scanning
🗺 Visual Investigation Diagram
Public form
↓ Validation
↓ Anti-spam checks
↓ Submission handling
↓ Monitoring/maintenance
⚠ Challenges
The challenge was balancing protection and usability. Too much friction can hurt real customers; too little protection invites abuse.
📚 What I Learned
I learned that form security starts with simple controls: validate, limit, monitor, and avoid trusting input.
➡ Next Steps
- Review form fields
- Keep validation strict but user-friendly
- Plan backend handling carefully if serverless forms are added
🧠 Reflection
This was useful because it turned a real project into security-aware learning without pretending that every task was a pure cybersecurity lab.
🧩 Lessons Learned
What worked
Thinking about abuse before backend integration.
What broke
Assuming a small form is harmless.
Why it broke
Any public input can become a target.
Fix / takeaway
Treat every form as an input boundary.
📈 Skill Progression Context
This supports SOC progression because many alerts and incidents start with public-facing inputs: forms, login pages, APIs, and upload points.
😄 TL;DR
A contact form is also an attack surface.
