Yes, with conditions: Netlify documents hosting controls, but they do not guarantee that either the platform or your deployed app is risk-free. Netlify carries SOC 2 Type 2, ISO 27001, managed TLS, and DDoS mitigation. Your response headers, Function authentication, environment-variable scopes, Forms, redirect rules, and Deploy Previews are still yours to configure.
Last reviewed August 2026.
Netlify is a reasonable place to run a production web app. It provides managed HTTPS, isolated build infrastructure, DDoS protections, security controls, and a documented compliance program. That verdict covers Netlify’s platform. It does not establish that the application deployed on it protects customer data, verifies payments, or limits an expensive API route.
That distinction is easy to test. If a protection lives only in browser JavaScript, a visitor can bypass it. A Netlify Function with no application-level authentication check can be called by anyone who knows its route. If a rate-limit rule was never configured, Netlify will not infer the limit your business needs.
The AxonBuild audit corpus, 21 third-party AI-built apps reviewed in June and July 2026, gives this boundary useful context: in 10 of them, a server accepted a value controlled by the browser. Nothing about that sample was selected to measure Netlify, so it is not a Netlify failure rate. It shows why changing hosts cannot repair a trust decision that remains in application code.
Is Netlify safe for a production app?
Yes, with conditions. Netlify’s security page lists AICPA SOC 2 Type 2, ISO 27001, ISO 27018, PCI DSS v4.0 against the SAQ-A requirements, DORA, GDPR, and CCPA. It states a minimum of TLS 1.2 and AES-256 for data in transit and at rest, and DDoS mitigation at layers 3 and 4 for TCP-level attacks plus layer 7. Its security overview documents the same program from the docs side. These controls reduce the infrastructure work a team would otherwise own, but they do not remove platform or application risk.
Application safety still depends on the code and configuration attached to the site. A production review should therefore ask two separate questions:
- Does Netlify provide the platform control the app needs?
- Did the app configure that control and enforce its own business rules correctly?
The same split appears when asking whether Vercel is safe. A host can secure its network and build systems while a customer application exposes a route, trusts a browser-supplied role, or sends a secret into a public bundle.
Every certificate Netlify publishes was issued about how Netlify runs Netlify. No auditor on any of them has ever opened your repository.
What Netlify protects and what you configure
Netlify’s security checklist separates built-in protections from recommended project controls. The distinction matters because most of the useful controls exist, are named products, and are switched off until you switch them on.
| Netlify platform control | Project control you still configure |
|---|---|
| Managed TLS certificates, provisioned automatically through Let’s Encrypt | HSTS, HSTS preload, and a CAA record on your custom domain |
| Platform DDoS mitigation at layers 3 and 4 plus layer 7 | Application-level abuse limits, because a traffic filter does not know your business rules |
| Web Application Firewall on a Netlify-managed OWASP Core Rule Set baseline | Whether your plan includes it, and what the app does about the attacks a generic ruleset misses |
| Firewall Traffic Rules for blocking by IP address or geographic location | Which addresses and regions should be blocked for your business |
| Rate-limiting support on all plans through code rules | The path, threshold, window, and action appropriate for the app |
| Isolated build environments | Which dependencies you trust and what your build scripts print |
| Sensitive values masked in deploy logs by default | Values your own build or install scripts echo into the log themselves |
| Secrets Controller, which scans repository code and build output for marked secret values | Marking the right variables as secrets, and rotating anything that already shipped |
| Environment-variable scopes and per-deploy-context values | Narrowing each value, since a variable applies to all scopes and contexts by default |
| Password Protection and Netlify team login for site deploys | Turning it on for Deploy Previews and branch deploys before they carry real data |
| SAML SSO, 2FA, and Directory Sync over SCIM for your Netlify team | Enforcing them, and deprovisioning people who leave |
| Log Drains to Datadog, New Relic, and others, plus team and site audit logs | Someone reading the alerts and knowing what normal looks like |
| Private Connectivity, so builds and functions reach your backend from allowlist-friendly IPs | The allowlist on the backend, and everything the backend does after the request arrives |
This shared-responsibility model is normal for application hosting. The useful question is whether each project control has been set deliberately and tested after deployment.
Netlify security headers are configured in your project
A Netlify deployment can set response headers through a _headers file in the publish directory or through netlify.toml. Netlify documents the file format, but it cannot choose a safe Content Security Policy for an application whose scripts, images, frames, and APIs it does not know.
# public/_headers
/*
Content-Security-Policy: default-src 'self'; object-src 'none'; frame-ancestors 'none'
Strict-Transport-Security: max-age=31536000; includeSubDomains
Referrer-Policy: strict-origin-when-cross-origin
X-Content-Type-Options: nosniff
Treat that as a starting shape. A real app may need additional script-src, connect-src, image, or payment-provider allowances. Deploy it to a preview, inspect the browser console, and confirm that required flows still work before sending the policy to production. HSTS also needs care because a long max-age affects every future visit, and includeSubDomains affects subdomains.
Lock the domain, not just the site
Headers protect a response. Three domain-level controls protect the name itself, and all three are in Netlify’s checklist.
- HSTS preload goes further than a plain
max-age. Preload puts the domain on a list browsers ship with, so the very first request is forced to HTTPS. It is also slow to undo, so turn it on only when every subdomain is ready for HTTPS forever. - A CAA record tells certificate authorities who may issue for your domain. Netlify recommends adding one so that only Netlify can generate Let’s Encrypt certificates for your custom domain.
- Domain lock blocks an unauthorized transfer. It is the control that stops a domain takeover at the registrar rather than at the edge.
The related failure is subdomain takeover: a DNS record still pointing at a Netlify site you deleted. Anyone who claims that name next serves content on your subdomain, with your cookies’ scope and your brand on it. Delete the DNS record at the same time you delete the site.
Are Netlify Functions protected by default?
A Netlify Function is reachable at the path assigned to it. Authentication belongs in the function or in an access layer around it. Netlify cannot determine whether /api/export-report should be public, available to any signed-in user, or restricted to an administrator.
Rate limiting is available without buying a separate security product. Netlify’s current rate-limiting documentation says all plans can define code-based limits for serverless functions, Edge Functions, and redirects. A serverless Function can attach a rule to its exported configuration:
import type { Config } from '@netlify/functions';
export default async (request: Request) => {
const authorization = request.headers.get('authorization');
if (!authorization) return new Response('Unauthorized', { status: 401 });
// Validate the credential with your actual identity provider
// before doing work.
return new Response('Accepted', { status: 202 });
};
export const config: Config = {
path: '/api/export-report',
rateLimit: {
windowLimit: 30,
windowSize: 60,
aggregateBy: ['ip', 'domain'],
},
};
The header-presence check is intentionally incomplete: a real function must validate the credential, its issuer, expiry, audience, and the caller’s permission. The rate rule also needs a threshold based on the endpoint’s cost and normal use. Netlify recommends checking the deploy log because some malformed rules may not be detected, and an invalid rule does not necessarily fail the deployment.
A static build also has a failure mode that needs no attacker at all. One app in the audit cohort sold golfers a single number: how far they hit each club. Its dispersion panel coalesced missing carry distances to zero and folded them into the mean, while a sibling screen filtered the same nulls out, so one club showed two different averages on two screens of the same product. The figure the whole app existed to produce was computed in the only place with no server behind it, and the app scored 39 out of 100 on data integrity. Taking the server out of the request path relocates the trust boundary into the bundle you ship to every visitor, where it is still a boundary and now it is downloadable.
Back in the rate-limited function above, delete the two guard lines (the authorization check and the rateLimit block) and the platform behaves identically, right up until someone finds the path, which is one of the gaps vibe-coded apps carry into production unnoticed.
Thirteen of the same 21 audited apps had no rate limit on their most expensive endpoint. That is platform-neutral evidence. It supports testing the deployed route, not assuming that a host caused or prevented the omission.
Netlify Forms are a public endpoint
Netlify Forms is the most Netlify-specific surface on the platform, and it is easy to forget it is there. Once the site is deployed, the form handler accepts posts from anywhere. Nothing about the handler requires the request to come from your page, from a browser, or from a human.
Netlify’s spam filter documentation says all form submissions are filtered for spam using Akismet, and only submissions that pass appear in the form’s verified submissions list. The two stronger controls are opt-in. A honeypot field is a hidden input that bots fill in and people cannot see. reCAPTCHA 2 can be added through a data-netlify-recaptcha attribute or with your own code. Netlify rejects submissions that fail either challenge outright.
Three things to settle before you ship a form:
- Who reads the submissions. They land in the Netlify UI, which means everyone with access to that team can read them. If a form collects anything sensitive, that access list is now part of your data-handling story.
- What a file upload means. File fields on a Netlify form store the uploaded file alongside the submission. The same access question applies, plus whatever the file itself contains.
- What the form triggers. A form that only writes a row is a spam problem. A form that sends an email, calls a paid API, or creates an account is a cost and abuse problem, and spam filtering alone will not cap it.
Redirect and proxy rules can turn into open redirects
The _redirects file is a routing tool, and routing tools redirect people to places. A rule with a wildcard destination hands that decision to whoever crafts the URL:
# public/_redirects (BAD: destination is caller-controlled)
/go/* https://:splat 302
Anyone can now send a visitor from yourdomain.com/go/... to any host on the internet, with your domain in the link they clicked. That is what an open redirect is, and it is exactly what phishing kits look for, because your reputation does the work of getting the click. It is also one of the ways a legitimate site earns a browser warning.
Replace the wildcard with an allowlist you control:
# public/_redirects (better: destinations come from a list you wrote)
/go/docs https://docs.example.com/ 302
/go/status https://status.example.com/ 302
/go/* /links/ 302
Proxy rules deserve the same suspicion. Netlify’s rewrites and proxies documentation shows the pattern for forwarding to another service:
/api/* https://api.example.com/:splat 200
That rule is fine because the destination host is fixed. The dangerous version is a proxy or serverless fetch whose target host comes from a query parameter, because your server then fetches whatever the caller names, including internal addresses that are not reachable from the public internet. That is server-side request forgery, and the fix is the same shape as the redirect fix: the caller may choose from a list you wrote, never supply the destination.
Where do environment variables end up on Netlify?
Netlify stores environment variables outside the repository when you create them through its UI, CLI, or API. Current environment-variable documentation also supports values per deploy context and, on eligible plans, scopes such as Builds and Functions. Values are available to all scopes and deploy contexts unless you narrow them.
A stored variable does not automatically become public. Exposure happens when application code or a build tool places the value in the client bundle. A secret referenced by browser code can therefore become a string in a downloaded JavaScript file even though Netlify stored the original value securely. Six of the 21 third-party apps in the audit cohort shipped a real secret this way, and in one of them it was a billing key handed to every visitor.
Use a Functions-only scope for server credentials when the plan supports scopes. Netlify’s Secrets Controller is the product name to look for: mark a variable as a secret and Netlify applies stricter handling and scans repository code and build output files for that value. Keep production and preview values separate, and inspect the built assets for known secret fragments. If a value reached a public deploy, remove the deploy and rotate the credential. Deleting the dashboard entry alone cannot retract copies already built into downloadable files. The broader distinction between local files, hosting settings, and browser variables is covered in environment variables explained.
Build-time variables are baked into what you ship
The split that catches most people is build time versus runtime. A runtime variable is read by a Function when a request arrives, and it stays on the server. A build-time variable is available to the build step, and it ends up in the HTML and JavaScript every visitor downloads whenever the framework or your code writes it into the client bundle, which is what the public prefixes below do. A build-time value used only to fetch data during the build, or kept in server-side output, does not reach the browser.
Frameworks mark the public ones with a prefix. PUBLIC_ in Astro, VITE_ in Vite, NEXT_PUBLIC_ in Next.js, and REACT_APP_ in Create React App all mean the same thing: put this value in the bundle. Nothing stops you from giving a service-role key one of those prefixes, and nothing will warn you at runtime.
Two consequences follow. First, rotating the dashboard entry does not un-ship a build-time value; the built files still carry the old string until you remove the deploys that contain it. Second, a variable applies to all scopes and all deploy contexts unless you narrow it, so a production secret set once with no scoping is also present in every Deploy Preview build.
Build logs
Masking hides values Netlify knows are sensitive. It does not hide a value your own build printed. An install script that echoes its config, an npm run build step with a debug flag, or a package that logs the environment on failure will all put a live credential into the deploy log as ordinary text, and deploy logs are readable by everyone on the team.
The fix is two lines of habit. Never echo config from a build command. Read the deploy log once, in full, after the first successful build on a new project, and search it for the first few characters of each secret you set.
Deploy Previews are visible unless you restrict them
Every pull request gets its own Deploy Preview at its own URL. On legacy and Enterprise plans, anyone holding that URL can open it until you turn on protection, and branch-deploy URLs are derived from branch names, which are guessable.
Netlify’s Password Protection documentation describes two options. Basic password protection puts a shared password in front of a deploy and is available on Pro plans. Team login protection requires a visitor to be a member of your Netlify team and supports SSO through your identity provider; the full set of options, including protecting only non-production deploys while production stays open, is on Enterprise plans. Sites on credit-based Free, Personal, and Pro plans use project visibility settings instead, where a project is public, password protected, or private, and the docs say previews stay private unless you change the preview visibility setting.
What the preview is wired to matters more than who can open the URL. A Deploy Preview pointed at the production database is production with a different hostname and usually with none of the protections you put on the production domain. Test data is the point of a preview; a preview that writes to the live table is one database with no staging wearing a preview badge.
Securing the Netlify account itself
“Is Netlify safe” sometimes means “can someone take over my Netlify account and replace my site”. That risk lives in your team settings, not in your code, and Netlify’s checklist names each control.
- SAML SSO lets you route every team in your organization through your identity provider, so access follows the same rules as everything else you run.
- Two-factor authentication can be enforced through that provider or set up inside Netlify.
- Directory Sync uses SCIM to provision and deprovision Netlify users from directory groups, which is the part people forget after someone leaves.
- Team and site audit logs record what members did, across all sites and settings and per site.
- Role-based access control through Netlify Identity or an external provider such as Auth0 or Okta restricts parts of a production site to a subset of users.
None of these are on by default on a small team. An account with one shared password and no 2FA is the shortest path to a compromised production site, and no amount of Content Security Policy compensates for it.
Netlify and Vercel: what actually differs for security
Both platforms take the same shape: strong managed infrastructure, an opt-in security layer, and everything above that left to you. The differences are in where the config lives and what your plan includes.
| Security surface | Netlify | Vercel |
|---|---|---|
| Response headers | _headers file in the publish directory, or a netlify.toml block | A headers array in vercel.json |
| Platform DDoS mitigation | Layers 3 and 4 plus layer 7, no configuration needed | Automated mitigation on all deployments regardless of plan |
| Managed WAF ruleset | Enterprise plans, and requires High-Performance Edge | Vercel WAF adds custom rules, IP blocking, and managed rulesets above the platform firewall |
| Rate limiting | Code-based rules on all plans, declared in the function’s exported config | Dashboard rules in the WAF: 1 rule per project on Hobby, 40 on Pro, 1000 on Enterprise |
| Built-in form handling | Netlify Forms, a hosted endpoint with Akismet filtering plus opt-in honeypot and reCAPTCHA 2 | No built-in form endpoint, so you write the route and its checks yourself |
| Preview protection | Basic password protection on Pro; team login and non-production-only scoping on Enterprise | Vercel Authentication with Standard Protection on all plans including Hobby; Password Protection on Enterprise or a paid Pro add-on |
| Secret scoping | Scopes and per-deploy-context values, with Secrets Controller scanning code and build output | Per-environment variables across Production, Preview, and Development |
Read that table as a config checklist, not a scoreboard. Neither column tells you whether your Function checks who is calling it. The longer version of the platform question is in is Vercel safe.
Is the Netlify free plan safe for client sites?
Yes, with conditions. The free plan runs on the same infrastructure with the same TLS, the same DDoS mitigation, and the same isolated builds. Those controls do not establish that the plan or a deployed app is risk-free. The clearest additional risk is availability because the plan does not give you headroom.
Netlify’s credit documentation is explicit about the ceiling: the Free plan has a hard limit of 300 credits per month with no option to purchase more, and once the balance is used up, all of your web projects are paused and visitors find a Site not available page at each URL. There is no auto recharge and no credit pack on Free. That is a hard stop, which protects you from a surprise bill and exposes you to a surprise outage.
For client work, three consequences matter.
- A traffic spike is an outage rather than a breach. A launch that lands, a bot crawl, or a heavy asset can burn the month’s credits, and the client’s site goes dark until the reset or an upgrade. On current Personal and Pro credit plans, optional auto recharge is off by default and buys fixed credit increments when enabled. The $104,000 incident came from Netlify’s earlier usage-billing model, and Netlify confirmed that the user would not be charged, so it is not an example of current auto recharge.
- Who owns the account decides who can recover it. Every client site under one agency account means one credit pool, one blast radius, and one login. Client-owned accounts with you invited as a member cost more admin and survive the relationship ending.
- The heavier protections sit on higher tiers. Netlify’s managed WAF requires Enterprise with High-Performance Edge, and team login protection is an Enterprise option. You do still get basic access control: credit-based Free plans have project visibility, so a project can be public, password protected, or private, and Netlify’s docs say previews stay private unless you change the preview visibility setting. Check that setting rather than assume it.
The free plan can suit a low-traffic client site that can tolerate an outage. A site with uptime obligations needs enough capacity and a recovery path.
Is Netlify trustworthy as a company?
Two different kinds of number get quoted here, public review scores and third-party security ratings, and neither one answers the question people are actually asking, so this section describes what each measures rather than quoting a score.
Public review scores for Netlify skew low as of August 2026. Read them and the complaints cluster on billing surprises, plan changes, and support responsiveness, not on breaches or data loss. Those are real reasons to plan your account carefully, which is what the free-plan section above is for. They are not evidence about whether the platform leaks data.
Third-party security ratings are the other number. Those vendors grade the external attack surface of the netlify.com domain itself: its response headers, DMARC policy, DNSSEC, TLS configuration, and public exposure. That is a legitimate measurement of one thing, and that thing is not your app. A company can score a B on its own marketing domain and still run your site on infrastructure with SOC 2 Type 2 and ISO 27001 behind it, and a company scoring an A would still have no visibility into whether your Function checks authorization.
The honest summary: Netlify’s platform security is well documented and independently audited, its commercial reputation is mixed and mostly about money, and neither fact tells you anything about the app you deployed. Only testing the deployed app tells you that.
Is Netlify still the default host for Bolt.new?
New Bolt.new projects use Bolt hosting by default. Bolt’s current hosting documentation says Netlify remains an option for new projects and for projects published there before Bolt hosting arrived in August 2025.
Open the tool and check the deploy target first, then read up on where to deploy a vibe-coded app before the next one. A .bolt.host site and a .netlify.app site have different project controls even if the application code is identical. The hosting choice is one of the concrete differences in the Lovable alternatives comparison.
Is netlify.app safe to click?
The netlify.app suffix identifies the hosting provider. It provides no evidence about the owner or purpose of a specific subdomain. Legitimate projects, experiments, and abusive pages can all use the same shared suffix. Malwarebytes has documented malicious subdomains hosted on the service, while Netlify documents isolation between subdomains through the Public Suffix List, which is why one netlify.app site cannot set a cookie for another.
So the honest answer to “are netlify.app sites a scam” is that the suffix cannot tell you, and that hostile pages on it are documented. As of August 2026 the Malwarebytes threat alert for netlify.app names individual subdomains it blocks for riskware and trojans, and says the service “is being abused to host malicious sites and malware”. Netlify’s own community forum carries user reports of phishing pages served from the same suffix, which staff route to the abuse channel. None of that is evidence about the specific link in front of you, in either direction, which is why the check has to be the link and not the domain.
Treat an unfamiliar Netlify link like any unfamiliar link. Check the exact hostname, the sender, the browser warning, and the action the page requests. Do not enter a password, recovery phrase, payment detail, or downloaded command because the parent domain looks familiar. A clean TLS certificate only confirms an encrypted connection to that hostname.
What to do if your Netlify site is flagged as unsafe or deceptive
This is the other half of the same question, and it is the more common one for people who build. Your netlify.app site suddenly shows a red interstitial, or your emails linking to it bounce. Work through it in this order.
- Identify which blocklist flagged you. A “Deceptive site ahead” screen in Chrome or Safari is Google Safe Browsing. A warning inside an email client is that provider’s own filter. A corporate network block is a third list again. They are separate systems with separate appeal processes, and clearing one does not clear the others.
- Find and remove the offending content. Check every page and every recent deploy, not just the current one. Old deploys stay reachable at their own URLs. Cloned login screens, uploaded PDFs, and copied brand assets are the usual triggers, and on a shared project they are often something a teammate deployed and forgot.
- Check whether your own site is being used to host someone else’s attack. This is the step people skip. An open redirect in
_redirects, a proxy rule with a caller-supplied destination, or a Netlify Form that renders submitted content back into a page all let a stranger point at your domain from a phishing email. Read the redirect section above; the flag may be an accurate report of a hole rather than a false positive. - Verify the exact hostname in Google Search Console. Add and verify the specific hostname, not a parent domain, then open the Security Issues report. Because
netlify.appis on the Public Suffix List, each subdomain is evaluated as its own site, so a verification of the wrong property will show you nothing. - Request a review, once you have actually fixed something. A review request on an unchanged site fails and adds delay. Say what was there, what you removed, and what you changed to stop it recurring.
- Move a real product to a custom domain. A shared suffix inherits reputation from thousands of strangers. If the site matters, put it on a domain you own, with the domain-level controls above set. Then a flag is about you, and clearing it is under your control.
People often arrive at this section asking whether Netlify is safe from hackers, because a red warning screen reads like a break-in. A flag is not evidence of one. A blocklist entry is a statement about content served from a hostname, so the explanations to rule out are a page a teammate deployed, an old deploy nobody remembers, and your own redirect rule being pointed somewhere by a stranger. Step 3 separates the last case from the first two, and it is the one where appealing without changing anything invites a second flag.
What to check before launching on Netlify
- 01 Confirm the deployed hostname and every preview hostname use the intended access rules.
- 02 Test protected Functions while logged out, with an ordinary account, and with an account from another tenant.
- 03 Add and verify rate limits on login, email, export, AI, payment, and other expensive routes.
- 04 Keep server credentials out of client code, split production from preview values, and rotate anything that reached a public bundle.
- 05 Deploy response headers to a preview and exercise login, checkout, uploads, embeds, and API calls before production.
- 06 Check every redirect and proxy rule for a destination a caller can control.
- 07 Turn on spam protection for any form, and confirm who on the team can read submissions.
- 08 Enforce 2FA on the Netlify team and remove members who no longer need access.
- 09 Verify that authorization, payment confirmation, and ownership checks run in code the browser cannot control.
These checks answer whether your Netlify site is safe more accurately than the hosting logo can. The broader AI-built app launch test adds recovery, monitoring, deployment gates, and regression protection to the same evidence-first approach.
Common questions about Netlify security
Is Netlify secure?
Netlify documents a mature platform security program and supplies managed HTTPS, DDoS protection, isolated builds, access controls, secret handling, and configurable traffic controls. Your site’s security still depends on how its code, identities, data rules, Functions, headers, and environment variables are configured.
Is Netlify trustworthy?
Netlify’s platform security is independently audited, with SOC 2 Type 2, ISO 27001, ISO 27018, and PCI DSS v4.0 against SAQ-A requirements listed on its security page as of August 2026. Public customer reviews skew lower and cluster on billing, plan changes, and support rather than on breaches. Third-party security ratings grade the netlify.com domain’s own external surface, such as its response headers and DMARC policy, and say nothing about your application.
Does Netlify include rate limiting?
Yes. As of 2 August 2026, Netlify says all plans support code-based rate limits for serverless functions, Edge Functions, and redirects. Enterprise customers with High-Performance Edge also have more advanced UI-managed rules. No useful project limit appears automatically; you define and verify it.
Does Netlify have a web application firewall?
Yes, but not on every plan. Netlify’s Web Application Firewall uses a Netlify-managed ruleset based on the OWASP Core Rule Set to block common attacks such as cross-site scripting, SQL injection, and remote code execution, and it runs in either an active blocking mode or a passive logging mode. Netlify’s Web Application Firewall documentation says the feature is available on Enterprise plans and requires High-Performance Edge. On other plans, the controls you can configure are code-based rate limits and Firewall Traffic Rules for IP and geographic blocking. Those are different controls, not a substitute: they limit how often and from where a request arrives, and neither inspects a request for the attack patterns the OWASP ruleset blocks, so your own input validation and authorization still carry that load.
Is the Netlify free plan safe for client work?
The free plan shares Netlify’s managed TLS, DDoS mitigation, and isolated-build infrastructure, but it does not include every higher-tier security control and is less reliable. Netlify’s Free plan has a hard limit of 300 credits per month with no option to buy more, and when the balance runs out all of your web projects are paused and visitors see a Site not available page. The managed WAF requires Enterprise with High-Performance Edge, and team login protection is an Enterprise option, though a credit-based Free project can still be set to private or password protected. Use it for prototypes, not for sites with a service commitment attached.
Why is my Netlify site flagged as deceptive?
A “Deceptive site ahead” warning comes from a blocklist such as Google Safe Browsing, not from Netlify, and it is attached to your exact hostname because netlify.app is on the Public Suffix List. The usual causes are content on your site or on an older deploy that resembles a login page for another brand, or your own site being used as a hop through an open redirect or a proxy rule with a caller-supplied destination. Remove the content, fix the redirect rule, verify the exact hostname in Google Search Console, then request a review through its Security Issues report.
Are Netlify Deploy Previews public by default?
That depends on your plan. On legacy and Enterprise plans a Deploy Preview gets its own URL and anyone holding it can open it until you add protection, and branch-deploy URLs are guessable from branch names; Netlify offers basic password protection on Pro plans and team login protection that requires Netlify team membership, with the full set of options on Enterprise plans. On credit-based Free, Personal, and Pro plans the same control is called project visibility, and Netlify’s docs say previews stay private unless you change the preview visibility setting. The bigger risk either way is a preview pointed at the production database, which makes the preview production under a different hostname.
Are Netlify Forms safe to use?
Netlify Forms is a public endpoint that accepts posts from anywhere once the site is deployed. Netlify filters all submissions through Akismet by default, and you can add a honeypot field, reCAPTCHA 2, or both, which Netlify rejects outright when a submission fails the challenge. Decide separately who on the team can read submissions and what each submission triggers, because spam filtering caps junk in your inbox, not the cost of an email or paid API call fired per submission.
Is a netlify.app link trustworthy?
The suffix alone provides no trust signal about the person operating a subdomain. Verify the precise link and sender, respect browser warnings, and avoid sharing sensitive information with an unfamiliar site.
Can a Netlify deployment be used for HIPAA-regulated data?
Do not infer that from a generic compliance badge. Netlify’s production guidance directs teams handling HIPAA-regulated data to its Trust Center and a reference architecture. Confirm the current contract, eligible services, required configuration, data flows, and business-associate terms for your exact use before storing regulated data.
Not sure your app is actually locked down?
I test it the way a stranger would, then fix what is open. Fixed quote after I have looked.
Talk about your app →
Free 20-minute video call with me.