
A mobile app security checklist covers the places a business app can leak or lose data: storage on the device, login and sessions, network traffic, the server behind the app, embedded secrets, third-party code, permissions, logging and updates. The core rule is to treat the app as untrusted, enforce every important decision on the server, and test with qualified people before release.
Key takeaways
- Mobile apps run on devices you do not control, so assume the app can be inspected, modified and copied.
- Store as little as possible on the device, and keep what you must store in the platform's secure storage.
- Treat biometrics as a convenience for unlocking, and rely on short-lived tokens and server-side checks for real protection.
- Never put secrets or powerful API keys inside the app, and never trust the app to enforce rules.
- Review every third-party SDK for data collection and update your privacy disclosures accordingly.
- Test with code review and penetration testing against recognised guidance such as the OWASP mobile project, and prepare for incidents before launch.
Why is mobile security different from web security?
A website runs on your servers and the browser is a sandbox you do not have to ship. A mobile app is software you hand to strangers. That changes the threat picture.
- Device loss and theft: phones are easily lost, and data on them may be reachable by whoever finds them.
- Rooted and jailbroken devices: users, or malware, can remove the protections the operating system provides.
- Reverse engineering: anyone can download your app and examine its code, resources and network calls.
- Untrusted networks: public wifi and hostile networks are common, so traffic must be protected.
How should you store data on the device?
The safest data is data that is not there. Start with minimisation.
- List what the app stores: tokens, profile data, cached records, files, logs.
- Remove what is not needed. If the app genuinely needs offline data, see offline-first design.
- Never store sensitive items in plain text: passwords, payment details, national identifiers and health information should not sit in ordinary preference files, local databases or logs.
- Use the platform's secure storage: both major mobile platforms provide protected stores, often called the keychain on Apple devices and the keystore on Android, which keep keys and small secrets under hardware or operating system protection.
- Encrypt local databases and files that must hold sensitive content, using keys managed by that secure storage.
- Limit backups and screenshots, hide sensitive screens in the app switcher, and clear data on logout.
How should authentication and sessions work?
- Use proper standards for login rather than inventing your own scheme. See authentication, roles and SSO for the options.
- Biometrics are a convenience. Fingerprint or face unlock is a good way to reopen the app or approve an action, but the secret that matters is the token or key it releases. Do not treat a biometric result as a server-side proof of identity on its own.
- Short-lived access tokens with refresh tokens kept in secure storage. Make it possible to revoke them.
- Session expiry: choose idle and absolute timeouts that match the sensitivity of the app. Financial and health apps need shorter ones.
- Multi-factor authentication for administrators, for sensitive actions and for accounts that hold valuable data.
How do you secure communication?
Every connection between the app and your servers should use TLS, the same encryption that protects websites. Our guide to SSL and TLS certificates explains the basics.
Certificate pinning: pros and cons
Pinning makes the app accept only specific certificates or keys for your servers, which defends against some interception attacks.
- Pros: raises the bar against attackers who install their own trusted certificates or compromise a certificate authority.
- Cons: careless certificate rotation can lock customers out until they update, and pinning can be bypassed on a device the attacker controls.
If you pin, pin to something you can rotate safely, plan the rotation in advance and include a way to recover.
How do you protect the API behind the app?
Never trust the app. A determined person can call your API directly, with any values they like, bypassing your interface entirely.
- Enforce permissions on the server, for every request. Hiding a button is not access control.
- Check object-level access: a user must only reach their own records, even if they change an identifier in a request.
- Apply rate limits and monitoring to catch scripted abuse.
Our API security checklist goes through these controls in more detail.
Where should secrets and keys live?
Anything inside the app can be extracted. That includes strings in the code, configuration files, resource files and anything an attacker can reveal by running the app on their own device.
- Do not embed private keys, database credentials, admin tokens or powerful third-party keys.
- Use server-side proxies: the app calls your server, and your server holds the secret and calls the provider.
- Treat client-side identifiers as public. Some services issue keys meant for apps. Restrict them, as the provider allows, to your app identity and limit what they can do.
- Rotate keys and plan for leaks. Old app versions linger, so design the server so revoking a key does not break everyone at once.
How far can code hardening and obfuscation go?
Obfuscation, which scrambles names and structure, makes reverse engineering slower but never impossible. Use it as a speed bump, not to protect secrets or rules. Anything that matters belongs on the server.
What about root and jailbreak detection?
Detection checks try to notice a compromised device and then warn the user, limit features or refuse to run. They are one useful signal for high-risk apps such as payments, but determined attackers can hide a modified device and legitimate users sometimes trigger false alarms. Combine them with server-side risk checks and decide in advance what the app does on detection.
How do you review third-party SDKs and privacy?
Analytics, advertising, payments, chat and crash reporting libraries run inside your app with the same access as your own code.
Keep an inventory of every SDK and what data it collects and sends. Remove what you do not need, update versions deliberately and watch security advisories. Update your privacy policy and store disclosures to match reality, and get consent where required. Requirements vary by country and platform, so confirm with a qualified adviser.
How do you minimise permissions?
Ask only for permissions the app truly needs, when the feature that needs them is used, with a clear explanation.
How do you keep logs secure?
Logs are useful, and a common source of leaks. Never log passwords, tokens, full card numbers or personal data. Disable verbose logging in release builds. Send crash and performance reports through a reviewed service, and scrub sensitive fields. Our guide to mobile app crash reporting and performance monitoring explains how to get visibility without exposing private data.
What is a good update and forced-upgrade strategy?
Plan for the day you find a serious flaw. The server should be able to tell the app that a version is unsupported, so the app shows a clear upgrade message. Use staged rollouts for normal releases and keep forced upgrades in reserve, as they frustrate customers if used casually.
How should you test mobile app security?
- Code review with a focus on storage, authentication, networking and input handling.
- Penetration testing by qualified people who test the app and the API together. See penetration testing and vulnerability scanning for what to expect.
- Use recognised guidance. The OWASP Mobile Application Security project publishes a widely used verification standard and testing guide, which make a good yardstick for scope and requirements.
How should you prepare for incidents and store policies?
Before launch, decide who handles a security report, how users are told, how a key or token is revoked and how you would push a fix quickly. Read the app store developer policies on data use, permissions and privacy disclosures, as they change over time and a removed app is a business problem in itself.
A worked example
Imagine a field-service company whose technician app stores customer phone numbers in an unprotected local file, embeds an admin API key and checks job ownership only in the interface. The team moves tokens to secure storage, replaces the key with a server endpoint, enforces ownership on the server, hides sensitive screens and adds a minimum version check. A penetration test confirms the fixes and is repeated before each major release.
FAQ
What are the most important mobile app security best practices?
Store little on the device and use secure storage for what remains, use TLS everywhere, enforce permissions on the server, keep secrets out of the app, use short-lived tokens with strong authentication, review third-party SDKs and test with qualified professionals before release.
Is certificate pinning necessary for a business app?
Not always. It helps against some interception attacks but adds operational risk if certificates change without a plan. Many business apps are well served by strong TLS, while higher-risk apps such as payments or health may choose pinning with a careful rotation process.
Can I store API keys inside a mobile app?
Treat anything inside the app as readable by attackers. Do not embed powerful or private keys. Have the app call your server, which holds the secret. If a provider issues app-specific public keys, restrict them to your app and limit their permissions.
What is OWASP Mobile and how can I use it?
OWASP, a nonprofit security community, publishes a mobile application security project with a verification standard and a testing guide. You can use it as a checklist for design and as an agreed scope when commissioning a penetration test.
Related reading
- API Security Checklist for Business Applications
- Mobile App Crash Reporting and Performance Monitoring
- Authentication, Roles and SSO for Business Apps
Next steps
Take one afternoon to list what your app stores, which secrets it contains, which SDKs it includes and which checks happen only on the device. Fix the worst gaps and book a qualified security test before your next major release. If you are planning a new mobile product or want a review of an existing one, see our app development services or contact us.



