Security at DeployYourApp

Security is not a feature we added — it is the foundation we built on. Your signing key never leaves your machine, and no device installs an update it cannot verify came from it.

Bundle Integrity Architecture

DeployYourApp protects updates by proving where they came from and constraining what they can contain, not by hiding them. Your signing key pair is generated on your local machine; the private half is never uploaded to our servers — not during setup, not during deployment, not ever. Bundles themselves are plain, signed ZIP archives, so you — or an app store reviewer — can download one and read every byte of it.

How Your Bundles Are Protected
Developer Machine
Signed with your private key
Signed Bundle
Web assets + SHA-256 manifest
Our Server
Serves it over HTTPS only
Your App
Verifies before installing

Client-Side Key Generation

Signing keys are generated on your local machine using cryptographically secure random number generators. The private key never leaves your development environment — only the public half is uploaded, so that the server and your app can verify what you signed.

RSA-4096 key pairs for bundle signing
Keys generated using OS-level CSPRNG
Private key written to disk with 0600 permissions, never uploaded
The CLI refuses to deploy with a key your installed apps would reject

Bundle Signing (RSA-4096)

Every bundle uploaded to DeployYourApp is digitally signed using your RSA-4096 private key. When your app downloads an update, it verifies that signature against the public key compiled into the app before applying anything — and verification is mandatory. With no public key configured, or with no signature supplied, the update is refused outright.

RSA-4096 digital signature with PKCS#1 v1.5 over SHA-256
SHA-256 checksum of the downloaded bytes, verified first
On-device verification before the archive is even opened
No configuration in which an unsigned bundle is installed

Per-File SHA-256 Manifest

Each bundle carries a manifest listing the SHA-256 hash of every file it contains. As the archive is extracted, each file is hashed and compared against that manifest in both directions: every declared file must be present with a matching hash, and every extracted file must be declared. A bundle with no readable manifest is refused.

Manifest written into the archive by the CLI at deploy time
Hashes re-derived on device as each file is written
Bidirectional check — a file cannot be added or removed
No fallback path and no legacy branch for a missing manifest

Web Assets Only, Enforced

The updater is structurally incapable of installing anything but web assets. Every archive entry must carry an extension from a fixed allowlist, and the leading bytes of every extracted file are checked against a table of native executable formats regardless of what the file is named. The same policy runs in the CLI before upload, so violations fail at your terminal.

Fixed allowlist: HTML, CSS, JS, JSON, images, fonts, media, WebAssembly
Mach-O, ELF, DEX, Java class, and PE headers rejected on sight
Path traversal entries rejected; no symlink is ever created
Per-entry and total size caps enforced on every platform, checked against the declared size, actual written bytes, or both

Infrastructure Security

Our infrastructure follows industry best practices for security. All traffic runs over TLS, security headers are set with Helmet, every endpoint is rate limited, and account activity is written to an audit log.

TLS for all API, dashboard, and bundle download connections
Bundle downloads are HTTPS-only, from an allowlisted host, with every redirect re-validated
Helmet.js security headers (HSTS with preload, CSP, X-Frame-Options)
Rate limiting on all API endpoints
Sensitive database fields encrypted at rest with AES-256-GCM, including two-factor secrets and backup codes
Automated dependency vulnerability scanning

Audit Logging

Every significant action in your organization is recorded in an immutable audit log. Track who deployed what, when channels were modified, and who accessed sensitive settings.

Immutable audit trail for all actions
User, action, timestamp, and IP address recorded
Exportable as CSV
Included on every plan

Responsible Disclosure

We take security vulnerabilities seriously. If you discover a potential security issue, please report it responsibly.

How to Report

Email security vulnerabilities to info@deployyour.app. Please include a detailed description of the vulnerability, steps to reproduce, and potential impact.

Our Commitment
We acknowledge reports as quickly as we can, typically within a few business days
Regular updates on our progress addressing the issue
Credit in our security advisories (if desired)
No legal action against good-faith security researchers