Netlify
Security Guide

How to Secure Your Netlify App

Last updated: January 12, 2026

Netlify provides infrastructure security, but application configuration is your responsibility. This guide covers securing your Netlify deployments.

Step-by-Step Security Guide

1. Configure Environment Variables

Add secrets in Netlify Dashboard, never in code. Use deploy contexts to scope variables appropriately.

2. Understand Build vs Runtime Variables

Build-time variables are embedded in output. Runtime variables only work in Netlify Functions. Choose appropriately.

3. Add Security Headers

Create a _headers file or configure in netlify.toml to add security headers.

# _headers
/*
  X-Frame-Options: DENY
  X-Content-Type-Options: nosniff
  Content-Security-Policy: default-src 'self'

4. Secure Netlify Functions

Validate authentication at the start of every serverless function. Don't assume functions are protected.

5. Protect Deploy Previews

Configure access controls for deploy previews to prevent leaking unreleased features.

6. Scan Your Deployment

Use VAS to check for security issues after deploying.

Common Security Mistakes

Avoid these common Netlify security pitfalls:

Exposing build-time secrets in frontend bundle
Missing authentication in Netlify Functions
No security headers configured
Unprotected deploy previews
Same credentials in all deploy contexts

Recommended Security Tools

Use these tools to maintain security throughout development:

VAS Security Scanner
npm audit / yarn audit
Git-secrets
Snyk

Ready to Secure Your App?

Security is an ongoing process, not a one-time checklist. After implementing these steps, use VAS to verify your Netlify app is secure before launch, and consider regular scans as you add new features.

Frequently Asked Questions

How do I add security headers on Netlify?

Create a _headers file in your publish directory or add headers to netlify.toml. Headers apply to all matching paths.

What's the difference between build and runtime environment variables?

Build-time variables are available during build and get bundled into your output. Runtime variables only work in Netlify Functions. Secrets should typically be runtime-only.