Xano API Penetration Testing
A Xano endpoint only enforces what its function stack explicitly checks for auth and ownership. We test what a signed-in user, or no user at all, can actually reach. CREST-certified testers, fixed price from £2,270 for a 2-day single-app scope, quoted within 24 hours.
- Unlimited retesting
- Unlimited pre-retesting
- No hidden fees
“I would highly recommend EJN Labs to any organisation seeking reliable, detailed, and well-managed penetration testing services, particularly for government or enterprise-level projects.”
“There wasn’t another company we could find that could deliver what we needed in the timeframe we needed. The client loved it, and we got instant ROI from the engagement.”
Every Xano endpoint runs on its own function stack, the sequence of steps that decides what data reaches the response and who is allowed to trigger it. What that stack checks, and in what order, is what actually gates access, not the interface built on top of it.
The function stack decides what an endpoint checks and returns, not the frontend calling it
Creating a database table in Xano can generate a full set of CRUD endpoints in one click, and Xano’s own security guidance confirms these ship with no authentication required and External Access enabled by default, which is convenient while prototyping but a risk if it survives into production. The toggle that closes this gap sits in each endpoint’s own Settings panel, where authentication can be required against whichever table has the function enabled, typically the user table. Endpoints created early in a build and then forgotten, sometimes called ghost endpoints, stay live and reachable long after anyone remembers building them. We audit every API group for endpoints left this way, and check whether the workspace’s Swagger documentation is still public and non-tokenised in production, since that setting publishes a directory of every endpoint in one place.
Authentication in Xano runs on JWE (JSON Web Encryption) tokens, generated by the Create Authentication Token function from a user id, an optional extras payload for data such as a role, and an expiration in seconds that a builder can set to a very large number if they never want the token to expire. A signed-in token proves who is calling an endpoint, but on its own it does nothing to stop that caller passing someone else’s record id, so every query and edit still needs its own filter or precondition against the authenticated user’s id, typically written as an expression such as items.user_id = auth id. Where a role is checked from extras rather than looked up fresh from the user table, that role is fixed at the moment the token was issued, so a change to a user’s role after login will not reach a function stack still reading the old token. We test the tokens themselves, the endpoints an unexpired or non-expiring token can still reach, and whether every path to a record, not just the obvious one, applies the same ownership and role checks.
External API calls from a Xano function stack go through the External API Request function, and the keys those calls need are meant to live in workspace-wide environment variables rather than typed directly into a header or a database column. On the response side, Xano’s own documentation confirms that building visually will automatically return the output of the first variable in the stack, so a Query All Records left as the last step returns every field on every matching record, not just the ones a frontend needs. Xano also applies a default wildcard CORS policy to API groups, and its own guidance recommends replacing that wildcard with an explicit list of allowed origins, methods and headers before launch. No-code frontends add their own wrinkle: WeWeb’s Xano plugin forwards authentication tokens automatically once configured, while Bubble’s API Connector and FlutterFlow’s API Call feature are set up by hand against the same Swagger documentation, so a header, scope or token copied in once during setup can go unreviewed long after the endpoint it points to has changed. We test what a function stack leaks through external calls or error messages, what a default response exposes, and whether CORS and every builder’s saved configuration still match what the endpoint allows today.
SCOPE
What we pen test on a Xano application
Auto-Generated CRUD Endpoints and Authentication Off by Default
A database table’s generated CRUD endpoints ship with no authentication required and External Access enabled by default, and Xano’s own guidance calls an endpoint left this way after launch a ghost endpoint. We check every API group for endpoints in this state, and whether the workspace’s Swagger documentation is still public and non-tokenised, publishing every endpoint in one place.
JWE Authentication Tokens and Token Expiry
Authentication tokens are generated by the Create Authentication Token function from a user id, an optional extras payload and an expiration in seconds, which a builder can set to a very large number so the token never expires. We test which endpoints accept an expired, non-expiring or reused token, and whether the extras payload can be manipulated or replayed to claim a role or identity it was not issued for.
Record Ownership Inside the Function Stack
A signed-in token proves who is calling an endpoint, not that the record id in the request belongs to them, so ownership has to be enforced separately with a query filter or precondition against the authenticated user’s id. We test every read, edit and delete path for that check, including the ones that only appear a few steps into a longer function stack.
Role Checks and Business Logic in the Function Stack
Role-based restrictions are usually built as a precondition comparing a requester’s role to a fixed value, either looked up fresh from the user table or read from the role stored in the token’s extras at login. We test whether every admin-only or role-gated branch enforces that check consistently, and what happens to a token’s cached role once the underlying user’s role has changed.
External API Requests and Stored Secrets
Calls to third-party services run through the External API Request function, and the keys those calls need are meant to sit in workspace-wide environment variables rather than a database column or a hardcoded header. We test whether secrets are actually referenced this way, and whether an error message, log or response can leak a key, token or internal URL back to the caller.
Response Shape and Whole-Record Exposure
Building visually, Xano automatically returns the output of the first variable in the function stack, so an unedited Query All Records or Get Record response includes every field on every matching row. We test what each endpoint actually returns against what the calling frontend needs, looking for password hashes, internal flags and other users’ data riding along in the response.
CORS Configuration on API Groups
Xano applies a default wildcard CORS policy to API groups, and its own security guidance recommends replacing that with an explicit list of allowed origins, methods and headers before launch. We test whether that replacement has actually happened, and whether a wildcard origin left in place lets a script on any domain call an authenticated endpoint using a token it should never see.
Rate Limiting and Free-Instance Throttling
Xano documents a rate limit of 10 requests every 20 seconds on free-plan instances to protect shared server resources, a limit that does not apply to in-app Run and Debug testing. We test what an endpoint does under repeated or scripted requests, and whether meaningful rate limiting is actually enforced against external callers on the instance’s own plan.
Team and Workspace Access Control
On Xano’s Pro and Enterprise plans, an Instance owner assigns team members one of two fixed default roles, admin or developer, or a custom role with its own Create, Read, Update and Delete permissions across objects such as workspace content, the live data source and environment variables. We test whether a lower-permission team member can still reach production data or read a secret through a permission that was left broader than intended.
Frontend Builders Calling Xano: Bubble, WeWeb and FlutterFlow
WeWeb’s Xano plugin forwards authentication tokens automatically once configured, while Bubble’s API Connector and FlutterFlow’s API Call feature are wired up by hand against the same Swagger documentation, each storing its own copy of a header, token or endpoint URL. We test what each connected frontend can still reach, and whether a token, scope or Swagger URL saved during setup still matches what the endpoint requires today.
OUR PROCESS
Xano API Penetration Testing: From Scope to Attestation
Scope and Function Stack Mapping
We agree the API groups, endpoints, auth-enabled tables and environments in scope, and catalogue every endpoint’s authentication setting, function stack and external integration before testing starts.
Authenticated and Role-Based Testing
We test from accounts across every role, auth-enabled table and token type in scope, comparing what each account’s frontend offers against what its underlying endpoint permissions actually allow.
Manual Exploitation
A CREST-certified tester manually tests function stack logic, ownership and role checks, token handling, stored secrets and CORS and rate limiting behaviour, chaining findings where they compound.
Reporting and Retest
You get a technical report with CVSS scores and reproduction steps, a walkthrough call, a free retest once fixes are deployed, and an attestation letter for auditors.
CREDENTIALS
Verified Accreditations Auditors Accept
Every credential below is independently verifiable. UK procurement teams, FCA supervisors, ISO 27001 / SOC 2 auditors, and cyber insurance underwriters all recognise these standards.
GET YOUR QUOTE
Get a CREST Xano pen test quote in 24 hours
A fixed-price quote back in one business day, from a named CREST assessor. No sales pipeline, no chasing.
- CREST and IASME accredited. Testing your auditors and clients already recognise.
- Fast-track testing within 24 hours where required. Free retest of every fix included.
- Live findings via your client portal, not a four-week PDF.
- Fixed price from £3,500 for a single-role, single-app scope, agreed up front. Most engagements run £5,000 and up. No day-rate surprises.
Under NDA Further named references available on a scoping call.
- We reply within one business day with a fixed-price quote from a named CREST assessor.
- You approve the scope and we book a start date, usually within 24 hours.
- Live findings land in your client portal as we test, with a free retest of every fix.
Get your fixed pen test quote in 24 hours
Quote request received
We will reply within one business day with your fixed-price quote from a named CREST assessor.
Your data stays with us. No newsletter signup.
or book a 20-min scoping call first
We reply within one business day. Your data stays with us. No newsletter signup.
COMPLIANCE READY
Reports Mapped to Every Framework
Findings are written so your team can reference the report against each framework without translation work.
ISO 27001:2022
Annex A.8.8 management of technical vulnerabilities plus A.5.15-5.18 and A.8.2-8.5 access control validation.
SOC 2 Type I & II
CC6 logical access, CC7 system operations, CC8 change management evidence.
PCI DSS
Requirement 11.4 application penetration testing across cardholder data environments, including ecommerce penetration testing for online retail platforms.
FCA SYSC
SYSC 4.1.1R, 6.1.1R, 13 mapped to each finding for FCA-regulated firms.
UK GDPR
Article 32 effectiveness testing, customer-data security controls, ICO-acceptable evidence.
Cyber Essentials Plus
Direct certification through our IASME body status, single-vendor delivery.
PRICING
Transparent Xano API Penetration Testing Pricing
Pricing depends on the number of roles, integrations and environments in scope. See our pricing page for how we quote.
2 to 3 testing days
Single user role, basic CRUD application, marketing website with auth. Around 5 working days from kickoff to report.
Get a fixed quote3 to 4 testing days
Multi-role SaaS, business application with payment integration. Around 8 to 12 working days from kickoff to report.
Get a fixed quote4 to 6 testing days
Multi-tenant platform, complex authorisation matrix, integration-heavy applications. Around 15 to 20 working days from kickoff to report.
Get a fixed quoteSECTORS
Sectors We Test Xano For
Sector-specific scoping for regulated UK organisations.
Fintech & FCA-Regulated
FCA SYSC, Open Banking FAPI 1.0, PSD2 SCA, payment-flow scrutiny, KYC/AML testing.
Fintech sector pageSaaS Companies
SOC 2 Type I & II evidence, multi-tenant boundaries, role escalation, customer-tenant isolation.
SaaS sector pageLaw Firms
SRA Cyber Standard, privileged data, conveyancing fraud defence, partner-tier procurement.
Law firm sector pageHealthcare
NHS DTAC, DSP Toolkit v6, UK GDPR Article 32, EHR systems, telehealth platforms.
Healthcare sector pageInsurance
FCA / PRA Operational Resilience, cyber underwriting, claims data, broker portals.
Insurance sector pagePublic Sector
CCS / G-Cloud framework, NCSC-aligned, citizen-facing services, PSN-compliance scrutiny.
Public sector pageWHY EJN LABS
What You Get From Xano API Penetration Testing
Six concrete differentiators competitors don’t all match.
CREST-Certified Testers, Verifiable
Every test by a CREST-certified pen tester (CRT, CCT APP, CCT INF where applicable). Verify our company status at crest-approved.org.
24-Hour Startup, Where Required
From signed scope to active testing in a single business day for incident response, audit deadlines, or regulator-driven timelines.
Live Findings, Not 4-Week PDFs
Critical issues reported during testing through your client portal. Your team remediates while testing continues.
Audit-Ready Reports
Executive summary plus full technical report with CVSS scores and explicit framework mappings (ISO 27001, SOC 2, PCI DSS, FCA SYSC).
Free Retests, Standard
Verify remediation of every finding before close-out. Letter of attestation for audit submission included. Most competitors charge £1,500-£3,000 per retest.
UK-Based CREST Testers
Every engagement performed by vetted, UK-based CREST-certified testers, matched to your needs, security clearance, and compliance scope.
FAQ
Frequently Asked
What access do you need to test our Xano backend?
Test or staging credentials for each auth-enabled table and role in scope, visibility of the relevant API groups and their Swagger documentation, and enough workspace access to see the environment variables, external API integrations and team permissions connected to the endpoints being tested. We do not need production environment variable values or your live data source directly.
Will this touch our live data?
Wherever a non-live data source, such as a staging or development data source, exists, we test against that instead of your live one, which Xano treats as a distinct object from other data sources. Where only a live data source is available, anything that could alter data is agreed and scoped with you in advance, and read-only checks are logged as they run.
How long does a Xano API penetration test take?
A single-application engagement is scoped at 2 testing days as a starting point, rising with the number of endpoints, environments, integrations and team permission roles connected to it. Reporting and a walkthrough call follow testing, with a free retest once fixes are deployed.
Is a dedicated Xano instance tested differently from a shared one?
On Xano’s dedicated resource plans your instance runs single-tenant, isolated from other customers’ data and infrastructure. Either way, testing concentrates on the API groups, endpoints, function stacks, permissions and integrations you have built, since Xano operates the underlying platform in both cases.
What is out of scope?
Xano’s own platform infrastructure, its multi-tenant hosting layer and its internal security testing programme are out of scope; that is covered by Xano’s own audit and disaster-recovery testing, not this engagement. We test the API groups, endpoints, function stacks, environment variables, external integrations and team permissions you have configured.
Does Xano have a policy for customers testing their own instance?
Xano’s Trust Center documents an internal Security Testing and Audit Program covering internal audits, penetration testing, ASV scans and disaster recovery testing of Xano’s own platform, rather than rules of engagement for a customer running their own test against a shared or dedicated instance. We confirm Xano’s current terms with you during scoping, particularly for anything that could touch shared infrastructure rather than a dedicated single-tenant instance.
Do you test the no-code frontend as well as the Xano backend?
Yes, where it is in scope. We test what each connected frontend, whether a native plugin like WeWeb’s or a manually configured Bubble or FlutterFlow API connection, can actually reach on your Xano backend, and whether tokens or scopes copied in during setup still match what each endpoint allows.
20+ CREST-accredited testing services in one place
Web, mobile, API, cloud, AI, infrastructure, red team. Pick the test that fits your environment.
Get a fixed price for your Xano application
A Xano endpoint only enforces what its function stack explicitly checks for auth and ownership. We test what a signed-in user, or no user at all, can actually reach. CREST-certified testers, fixed price from £2,270 for a 2-day single-app scope, quoted within 24 hours.



