Application security feature

Progressive web app protection

Otukan protects the native wrapper that ships your progressive web app to Google Play and the App Store, and gives your backend evidence the wrapper is genuine.

  • Android
  • iOS
Repackaged web app shell is met at the native wrapper checks boundary before it reaches the appRepackaged web app shellNative wrapper checksYour app
  • Protect the shell you ship

    When your web app reaches phones inside a native wrapper, Otukan protects that wrapper like any other Android or iOS app.

  • Proof for your server

    App attestation lets your backend tell the genuine wrapper from scripts and look-alike clients calling the same web endpoints.

  • A guarded bridge

    The link between web content and native functions is where wrapper apps are attacked. Otukan watches it at runtime.

Wrapper threats Otukan handles

Select a threat to see how Otukan detects it in the wrapper, how it responds and what your backend receives.

Repackaged wrapper

  1. Detect

    Otukan checks that the wrapper's code, resources and signing identity match the build you published.

  2. Respond

    A re-signed copy stops before it loads your web content.

  3. Report

    The integrity failure reaches your backend with the platform and version.

Tampered native bridge

  1. Detect

    Otukan looks for injected code in the functions that pass data between web content and the native layer.

  2. Respond

    Native functions such as file access or device features are closed to the page.

  3. Report

    A code-injection signal accompanies the next request to your server.

Web view debugging on release

  1. Detect

    Otukan detects a debugger or inspector attached to the release wrapper.

  2. Respond

    The session ends or sensitive pages are withheld, per your policy.

  3. Report

    The debugging signal is recorded against the build.

Rooted or jailbroken phone

  1. Detect

    Platform-specific checks find the traces root tools leave on Android and jailbreak tools leave on iOS, while the wrapper runs.

  2. Respond

    Sensitive pages and native functions are withheld; general content stays available.

  3. Report

    A device-integrity signal travels with requests, so your server can apply it to the web session.

Scripted clients

  1. Detect

    Requests without valid attestation from the genuine wrapper stand out at your backend.

  2. Respond

    Your server applies stricter checks or refuses the call.

  3. Report

    Attestation results are available for your API and fraud rules.

Controls for the native wrapper

Each control protects a part of the wrapper that web content alone cannot defend.

  • Repackaging detection

    Recognises wrapper copies rebuilt or re-signed by someone other than your team.

  • App attestation

    Gives your server evidence that a request came from the genuine wrapper on a real device.

  • Anti-debugging

    Detects inspectors and debuggers attached to the release wrapper and its embedded web view.

  • Code injection prevention

    Detects code inserted into the wrapper's process, including the bridge to native functions.

You choose the response

Set a response for each user flow. Start by observing, then tighten flow by flow as the signals prove themselves.

Observe

Signal sent to your backend

Rolling out a new policy and measuring real-world signals.

Warn

This device looks modified. Continue with care.

Conditions some genuine users create, such as developer settings.

Restrict

Payments are unavailable on this device.

Payments, stored data and account changes.

Terminate

Session closed for your security.

Clear tampering on a high-risk flow.

How it works

  1. Map the runtimes

    Record where your web app runs: browser, home-screen install or native wrapper.

  2. Scope the wrapper

    List the native functions and origins the wrapper exposes to web content.

  3. Protect the wrapper build

    Otukan fits the wrapper's existing pipeline; your team keeps its signing keys.

  4. Verify at the server

    Your backend checks attestation and runtime signals before serving sensitive data.

  5. Test every update path

    Rehearse store updates and web content updates separately before release.

Free for app publishers

Check your app's exposure

A passive review of your published app by an Otukan engineer. No files, no access to your systems. Findings go by email to the verified publisher.

You finish the request on the next page.

Evaluate progressive web app protection by first identifying where your web app actually runs, then protecting the layer you control. A web app can reach a phone in a browser tab, as a home-screen install or inside a native wrapper published to Google Play and the App Store. Otukan protects that native wrapper: its code and signing identity, the bridge between web content and native functions, and its runtime environment, with attestation your backend can check. In a browser tab or home-screen install, the browser owns the runtime, so security comes from web controls and your server. Android and iOS wrappers are scoped separately.

The full evaluation checklist is in the progressive web app protection solution guide.

Architecture

The phrase “progressive web app” covers three different runtimes. Each has a different owner and a different attack surface.

Browser execution

In a browser tab, your HTML and JavaScript run inside a browser you did not build. The browser enforces origin rules, storage limits and permissions. The same is true when the user adds the app to the home screen: it looks like an app, but the browser engine still runs it.

Web content

Your pages, scripts and API calls are the same wherever they run. They can be inspected, copied and replayed from any desktop, which is why the server must never trust web content on its own.

The native wrapper

A wrapper is a small native Android or iOS app that loads your web content in an embedded web view and exposes some native functions to it, such as files, camera or push notifications. It is signed, distributed through stores and installed like any other app. That makes it protectable, and it makes it a target.

RuntimeWho controls itWhat Otukan protects
Browser tabThe browserNothing directly; use web controls and server checks
Home-screen installThe browser engineNothing directly; use web controls and server checks
Native wrapperYour teamWrapper code, bridge, runtime and attestation

Protection limits

Honest scope is what makes the rest trustworthy. Otukan acts on the component it runs inside.

What Otukan influences

Inside the wrapper, Otukan confirms the build is yours, watches the bridge for injected code, detects debuggers and inspectors on release builds, and applies your response per flow. It also provides app attestation, so your backend can treat requests from the genuine wrapper differently from requests made by scripts calling the same endpoints.

Bridge discipline

The bridge is the part most worth reviewing before any tool is applied. Expose only the native functions the web content genuinely needs, bind each one to an approved origin, and treat every call from the page as untrusted input. Otukan then watches that smaller surface at runtime and reacts when code is injected into it. A narrow bridge protected at runtime is far harder to misuse than a wide one.

What stays with the web layer

Otukan does not rewrite your web content or run inside third-party browsers. Cross-site scripting, content injection and session handling in the page are controlled by your web security practice. The two layers meet at your server, which can combine web session data with signals from the wrapper.

Release

A wrapped web app has two release streams. Test both.

Distribution

Check each store’s expectations for wrapped web apps before you protect anything, since both review the native experience the wrapper provides. The wrapper ships through Google Play and the App Store like any native app. Protection fits the wrapper’s existing pipeline, and your team signs the final build. Confirm the protected wrapper passes store review in your normal release cycle.

Origin and network behaviour

Decide which origins the wrapper may load and which native functions each origin may call. Test that the wrapper refuses an unapproved origin and that the bridge stays closed to it. Then move the device between networks and through a captive portal, and confirm the wrapper does not fall back to loading content from somewhere it should not. For deep-link handling in wrappers, see the deep-link guide.

Updates

Web content updates on your schedule; the wrapper updates through the stores. Rehearse each separately: install, update the wrapper, update the web content, sign in and run the most sensitive flow. Log each run with the wrapper version, web content version, device, OS version and reviewer.

Common questions

  • Can Otukan protect a web app running in the browser?

    In a browser tab or a home-screen install, the browser runs your code and controls the environment, so no in-app control reaches it. There, protection comes from web controls such as a content security policy, secure cookies and server-side checks. Otukan protects the native wrapper when you ship one, and gives your server evidence about it.

  • Our web content updates without a store release. Is that a problem?

    It is a feature to plan for. Web content can change daily while the wrapper changes only with store releases. Otukan protects the wrapper and its bridge; your web release process governs the content. Agree which origins the wrapper may load, and test both update paths separately so neither weakens the other.

  • Is a wrapper worth it just for protection?

    Usually the wrapper exists for other reasons, such as store presence, push notifications or device features. Once it exists, it becomes an attack surface. Protecting it covers that surface and adds attestation, which lets your server trust requests from the genuine app more than those from scripts.

On the mobile engineering team?

How protection fits your build, signing and release, platform by platform.

Give your web app a native shield

Tell us how your web app reaches phones: browser, home-screen install or a native wrapper, and which platforms the wrapper targets. We do not ask for source code, signing keys or production credentials.

Or request a technical demo