Running a web agency? Learn how to integrate security into every project, offer security audits as a service, and protect your clients from costly breaches.
Anay Pandya
1,378 words
Anay Pandya
Founder of ZeriFlow · 10 years fullstack engineering · About the author
Key Takeaways
If you build websites for clients, you own their security — whether you realize it or not. When a client's site gets hacked, they don't call their hosting provider first. They call you.
<div class="zf-stat-callout" style="background:#0d1117;border:1px solid rgba(16,185,129,0.25);border-left:3px solid #10b981;border-radius:4px;padding:16px 20px;margin:24px 0"> <p style="margin:0 0 4px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.15em;color:#10b981;font-family:monospace">ZeriFlow Data — 12,400+ sites analyzed</p> <p style="margin:0;font-size:13px;color:#e2e8f0;line-height:1.6;font-family:monospace">Across 12,400+ sites scanned on ZeriFlow, 19% expose sensitive paths such as /.git/, /backup, or /admin without authentication — providing attackers a direct window into application internals.</p> </div>
Is your site actually secure?
Run a free check — 60 seconds
Keep reading
78% of SMBs hold their web agency responsible for security incidents, even when the contract doesn't explicitly cover security. And they're not entirely wrong: most common vulnerabilities stem from decisions made during development.
Here's the reality:
The agencies that thrive in 2025 and beyond treat security as a core competency, not an afterthought.
After analyzing thousands of agency-built websites, these are the recurring issues:
### 1. Missing HTTP Security Headers Most agency sites ship without Content-Security-Policy, X-Frame-Options, or Permissions-Policy. These headers take minutes to configure but protect against entire classes of attacks.
# Nginx — add to every server block
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;### 2. Insecure Cookie Defaults
Session cookies without Secure, HttpOnly, and SameSite flags. This is especially common with WordPress and custom PHP applications.
### 3. SSL Certificate Mismanagement Expired certificates, incomplete certificate chains, or TLS 1.0/1.1 still enabled. Auto-renewal via Let's Encrypt solves most of this.
### 4. No Email Authentication Missing SPF, DKIM, and DMARC records mean anyone can send emails pretending to be your client's domain. This is a phishing disaster waiting to happen.
### 5. Information Disclosure
Server version headers, exposed .git directories, directory listings enabled, and debug pages left in production. Each gives attackers a roadmap.
### 6. Outdated Dependencies WordPress plugins that haven't been updated in months, npm packages with known vulnerabilities, and outdated CMS cores.
Security shouldn't be a separate phase — it should be woven into your existing process:
### During Discovery and Planning - Include a security requirements section in every project brief - Assess the risk level (e-commerce > brochure site) - Identify compliance requirements (GDPR, PCI-DSS, HIPAA) - Document which user data will be collected and stored
### During Development
- Use a security headers template for every project
- Configure SSL/TLS properly from day one (not "we'll fix it later")
- Set cookie flags in your session configuration
- Run npm audit or equivalent before every deployment
- Use CSP headers, starting with report-only mode
### Pre-Launch Checklist Before any client site goes live, run through this:
### Post-Launch - Schedule monthly security scans for all client sites - Set up certificate expiration monitoring - Keep a dependency update schedule - Document security configurations for handoff
Security audits are a high-value, recurring revenue stream that most agencies overlook. Here's how to package them:
### One-Time Security Audit - Comprehensive scan of the client's website - Detailed report with findings and recommendations - Priority-ranked fix list - Typical price: $300-$800 per site
### Monthly Security Monitoring - Automated weekly scans - Monthly summary report - Alert on critical issues - Certificate expiration monitoring - Typical price: $50-$150/month per site
### Security Hardening Package - Full audit + implementation of all fixes - Security headers configuration - SSL/TLS optimization - DNS security setup (SPF, DKIM, DMARC) - Typical price: $500-$1,500 per site
### Annual Security Review - Comprehensive re-assessment - Compliance check update - Technology stack security review - Updated recommendations - Typical price: $400-$1,000
Security pricing depends on three factors:
Rule of thumb: Price security audits at 15-25% of the original development project cost. A $10,000 website project should include a $1,500-$2,500 security audit option.
For recurring monitoring, aim for 5-10% of monthly hosting/maintenance revenue per client.
The key insight: Clients don't buy security. They buy peace of mind and liability protection. Frame your pricing around risk reduction, not technical work.
Technical jargon kills security conversations. Here's how to communicate effectively:
### Use a Score, Not a List "Your website scored 42 out of 100 on security" is immediately understandable. A list of missing headers means nothing to most clients.
### Focus on Business Impact Instead of: "Your CSP header is missing, exposing you to XSS attacks."
Say: "Your website is missing a protection that prevents hackers from injecting malicious code. This could lead to customer data theft or your site being used to distribute malware."
### Provide Comparisons "Your site scored 42/100. The average for your industry is 65. Your top competitor scores 78."
### Use Traffic Light Colors - Red: Critical issues that need immediate attention - Yellow: Important improvements to make within 30 days - Green: Items that are properly configured
### Always Include a Recommendation Every finding should have a clear next step: "We recommend implementing this fix. It will take approximately 2 hours and will improve your score by 8 points."
To offer security at scale across all client projects, you need the right tools:
### Automated Scanning Manual testing doesn't scale. You need a scanner that can check multiple sites regularly and track improvements over time. Look for: - Batch scanning capability - Score tracking and trend analysis - Detailed, client-ready reports - API access for integration with your workflow
### Configuration Templates Build reusable security configurations for your most common technology stacks:
# Apache .htaccess — agency security template
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline';"### Monitoring and Alerting Set up automated alerts for: - SSL certificate expiration (30-day, 14-day, 7-day warnings) - Security score drops - New vulnerabilities in dependencies - DNS record changes
ZeriFlow was built with agencies in mind. Scan client websites in under 60 seconds, get a numerical score out of 100, and receive detailed recommendations organized by priority.
Use the free tier to evaluate the tool on your own projects. The Pro plan ($9.99/month) gives you unlimited quick scans and scan history — enough to monitor your entire client portfolio.
Key features for agencies: - Fast scanning — Check a client site during a call - Score tracking — Show clients their progress over time - Detailed recommendations — Each finding includes specific fix instructions - Multiple categories — SSL, headers, cookies, DNS, privacy, and more in one scan - Scan history — Build a security timeline for each client
Turn security from a cost center into a revenue stream. Your clients need it, and you're in the best position to deliver it.
<!-- zf-internal-links -->
Add security scanning to your CI/CD pipeline.
Catch vulnerabilities before they reach production.
Related resources
Website Vulnerability Scanner
Run a broader website security audit across headers, TLS, DNS, cookies, SEO, and disclosure checks.
Security Headers Checker
Check CSP, HSTS, X-Frame-Options, and other response headers.
SSL Checker
Review TLS certificate, HTTPS, and transport security signals.
DMARC Checker
Validate email authentication records for domain spoofing protection.
CSP Checker
Review Content-Security-Policy coverage and common gaps.
December 1, 2025
Website Security Checklist 2025: 20 Things to Check Before Launch
Monitor your security score
Schedule recurring scans and catch regressions after deployments.