Ionic and Capacitor Penetration Testing
Capacitor’s WebView bridge hands your JavaScript direct access to native plugins in every build you ship. We test the bridge, storage, deep links and update channel your app relies on. CREST-certified testers, fixed price from £4,240 for a 3-day single-framework 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 native capability your Ionic app uses, from the camera to encrypted storage, crosses Capacitor’s WebView bridge as a plugin call from JavaScript into native code. We test what each bridge call and plugin actually allows once it reaches the native side.
Why an Ionic and Capacitor app’s risk sits in the bridge and its configuration
Every native capability an Ionic app uses, from the camera to push notifications, crosses Capacitor’s WebView bridge as a plugin call passed from JavaScript into native Swift, Kotlin or Java code. Capacitor’s own security guide states plainly that every Capacitor developer is responsible for auditing their own app’s data, authentication, network and web view security, and it recommends configuring a Content Security Policy through a meta tag in the app’s own HTML rather than relying on one being set for you. We test what a plugin’s native implementation actually allows once a bridge call reaches it, and whether the release build ships with a CSP that restricts what the web view can load.
Data written with the official Preferences plugin lands in UserDefaults on iOS and SharedPreferences on Android, and Capacitor’s own documentation is explicit that this API is not meant to be used as a local database and carries none of the hardware-backed protection that iOS Keychain Services or the Android Keystore provide for a session token or an encryption key. Deep linking carries a separate risk: Capacitor’s security guide warns that a Custom URL Scheme is not globally controlled the way a web domain is, so a malicious app can register the same scheme and intercept a link, including the redirect an OAuth2 flow depends on, which is why it states PKCE must be used for any OAuth2 flow completed via a deep link. We test what your app actually stores in Preferences versus a Keychain or Keystore-backed alternative, and whether every deep link handler and OAuth redirect enforces PKCE the way the guidance requires.
Where a build receives updates outside app store review, that update path becomes part of the app’s attack surface. Ionic’s own commercial products announcement confirms new sales of Appflow, its own live-update platform, were discontinued in February 2025, with existing Appflow customers retaining access only through 31 December 2027, so we confirm during scoping which live-update mechanism, if any, your build currently uses before testing how it verifies an update’s authenticity. Every check made on the client side is still only a convenience once a request reaches your backend, so we test whether your API enforces authorisation independently of what the Capacitor client sends. Where your organisation also ships a React Native or Flutter build against the same backend, our React Native and Flutter penetration testing covers that app alongside this one.
SCOPE
What we pen test on an Ionic and Capacitor application
WebView Bridge and Plugin Exposure
Every native capability an Ionic app uses crosses Capacitor’s WebView bridge as a plugin call passed from JavaScript into native code, and Capacitor’s own security guide places responsibility for auditing that surface on the developer, not the framework. We test what each plugin’s native implementation actually allows a bridge call to do, not just what the JavaScript API is documented to expose.
Content Security Policy Configuration
A Content Security Policy for the web view is set through a meta tag in the app’s own HTML, in the same format a website would use, and Capacitor’s documentation points developers to configure one themselves. We check whether a CSP is present in the release build and whether it actually restricts the scripts, origins and connections a compromised web view could otherwise reach.
Cleartext Traffic and Local Server Configuration
Android disables cleartext HTTP traffic by default from API 28 onward, and Capacitor’s own configuration schema documents a server.cleartext flag that exists specifically to allow it back in for a live-reload development server. We check that this flag, along with the androidScheme, iosScheme and hostname settings Capacitor uses to serve your web assets, is not left in a state meant for development once the app ships.
allowNavigation and WebView Navigation Scope
Capacitor’s documentation states that by default all external URLs are opened in the device’s external browser rather than inside the app’s own web view, and the allowNavigation setting is what lets specific external domains load inside the web view instead, something its own schema comments describe as not intended for production use. We test which domains your build actually allows to navigate inside the web view and whether that list matches what production needs.
Preferences Storage and Session Data
The official Preferences plugin stores data in UserDefaults on iOS and SharedPreferences on Android, and Capacitor’s own documentation is explicit that this API is not meant to be used as a local database and offers none of the hardware-backed protection that iOS Keychain Services or the Android Keystore provide. We check what your app actually writes to Preferences and whether a session token, credential or encryption key has landed there instead of behind Keychain or Keystore.
Custom URL Scheme and Deep Link Hijacking
Capacitor’s security guide warns that a Custom URL Scheme is not globally controlled the way a web domain is, so another app can register the same scheme and intercept a link, including the redirect an OAuth2 flow depends on, which is why it states PKCE must be used for any OAuth2 flow completed via a deep link. We test every appUrlOpen handler your app registers and confirm OAuth redirects enforce PKCE, the same check we run on a React Native build using the same backend.
Native Plugin Implementation Review
Every Capacitor plugin, official or community-built, ships real Swift, Objective-C, Kotlin or Java code that runs with the full native permissions of your app, independently of anything the JavaScript layer assumes about it. We review the native side of any custom or third-party plugin in scope for the access, storage and validation decisions it actually makes once a bridge call reaches it.
Backend Authorisation Behind the App
A check written into your Ionic app, whether in a callback, a plugin response or a stored token, is a convenience for the interface, not a control, since a request can always be replayed or rebuilt without the app in between. We test whether your backend enforces authorisation and object-level access itself, independent of what the Capacitor client sends or withholds.
Live Update and Over-the-Air Channel Integrity
Where a build receives updates outside app store review, through Ionic’s own Appflow Live Updates or another channel, that update path becomes part of the app’s attack surface, and Ionic’s commercial products announcement confirms new Appflow sales stopped in February 2025 with existing customer access running only to 31 December 2027. We confirm during scoping which live-update mechanism, if any, your build currently uses, then test how it verifies an update’s authenticity before applying it.
Certificate Validation and Transport Security
Capacitor’s own security guide states plainly that apps should only make requests to SSL-enabled endpoints and should never call an http:// address, since that is the only way to guarantee data is not sent in plain text. We test whether your app enforces this in practice, including certificate pinning where you use it and what happens to the connection if a pinned or expected certificate does not match.
OUR PROCESS
Ionic and Capacitor Penetration Testing: From Scope to Attestation
Scope, Builds and Access
We agree which builds, platforms and backend environments are in scope, plus TestFlight, Play internal track or signed build access and at least one authenticated account for every distinct role.
Bridge and Plugin Mapping
We catalogue every plugin your app uses, official and community-built, map what each exposes across the WebView bridge, and identify deep link handlers, storage locations and any live-update channel in the build.
Manual Testing
CREST-certified testers manually test plugin exposure, storage, deep link handling, certificate pinning and backend authorisation, chaining findings where they compound.
Attestation 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 Ionic and Capacitor 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 Ionic and Capacitor Penetration Testing Pricing
Pricing depends on the number of roles, integrations and environments in scope. See our pricing page for how we quote.
3 to 5 testing days
Single user role, basic CRUD application, marketing website with auth. Around 5 working days from kickoff to report.
Get a fixed quote5 to 7 testing days
Multi-role SaaS, business application with payment integration. Around 8 to 12 working days from kickoff to report.
Get a fixed quote7 to 9 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 Ionic and Capacitor 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 Ionic and Capacitor 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 Ionic and Capacitor app?
We need the build itself, through TestFlight, a Play internal testing track or a signed APK or IPA, plus at least one authenticated account for every distinct role the app exposes. If the app talks to a backend you control, API documentation or a schema export and any tokens needed for a staging environment speed up testing.
Will testing touch our live data?
We test whichever build and environment you give us access to. If that points at production, we agree exclusions upfront, such as destructive account actions and real payment processing, and we do not run those tests against live customer data without that agreement in writing.
How long does an Ionic and Capacitor penetration test take?
A single Ionic and Capacitor application sits in our 3-day single-framework scope, with a report typically landing around 5 working days after kickoff. An app with more roles, a wider plugin surface or multiple backend integrations moves into a larger scope with more testing days.
Do you test iOS, Android or both?
Both, where both are in scope. Capacitor plugins are implemented separately for iOS and Android, so a missing check or a bypass found on one platform’s native code does not mean the other platform’s implementation is safe, and we test each build.
Is the backend our app calls included in the test?
Only if you scope it in. This test covers the Ionic and Capacitor app itself: its bridge, plugins, storage, deep links and update channel. Testing the API or backend behind it in depth is covered by our API penetration testing and can be scoped alongside this test.
What is out of scope for a single-framework Ionic and Capacitor test?
Infrastructure hosting your backend, such as your cloud environment or servers, is out of scope for this test and covered by our cloud penetration testing service instead. A separate web app or admin panel sharing the same backend is also scoped and quoted separately.
Do you need our source code?
No. Testing is black-box against the installed build by default. A grey-box option, where we review your plugin implementations, bridge configuration and update-channel signing setup alongside testing, is available if you want faster or deeper coverage of specific findings.
Does Ionic or Capacitor have a customer penetration-testing policy we need to follow?
Ionic Framework and Capacitor are open-source tooling you build, sign and release yourself rather than a shared multi-tenant service, so there is no vendor notification process for the app itself. Capacitor’s maintainers do run a responsible-disclosure process for vulnerabilities in the framework, reported to security@ionic.io, which is separate from testing your own app, and where your build relies on a distribution channel, backend platform or live-update service, we confirm that provider’s current testing terms during scoping.
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 Ionic and Capacitor application
Capacitor’s WebView bridge hands your JavaScript direct access to native plugins in every build you ship. We test the bridge, storage, deep links and update channel your app relies on. CREST-certified testers, fixed price from £4,240 for a 3-day single-framework scope, quoted within 24 hours.



