惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
博客园 - 三生石上(FineUI控件)
D
DataBreaches.Net
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
GbyAI
GbyAI
P
Proofpoint News Feed
Microsoft Security Blog
Microsoft Security Blog
月光博客
月光博客
I
InfoQ
V
Visual Studio Blog
罗磊的独立博客
Engineering at Meta
Engineering at Meta
Vercel News
Vercel News
Jina AI
Jina AI
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
The Cloudflare Blog
小众软件
小众软件
雷峰网
雷峰网
V
V2EX
人人都是产品经理
人人都是产品经理
Stack Overflow Blog
Stack Overflow Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
🔐 Beyond SSL Pinning: mTLS, Backend Security & Real-World...
Armando Picó · 2026-05-05 · via DEV Community

Armando Picón

In the previous parts, we explored SSL pinning across Android and iOS, including both certificate and public key approaches.

But here’s the uncomfortable truth:

Even perfectly implemented pinning is not enough.

In this final part, we move beyond the client and look at what truly defines a secure mobile architecture:

  • Mutual TLS (mTLS)
  • Backend access control
  • Defense in depth
  • When mobile security actually fails in production

🧠 Why Pinning Is Not the Endgame

Pinning protects the channel, not the system.

That means:

  • ✔ Prevents MITM attacks
  • ❌ Does NOT prevent unauthorized API access
  • ❌ Does NOT validate who is calling your backend

If your API is publicly exposed, anyone can still:

  • Use Postman
  • Reverse engineer your app
  • Replay requests

So the real question becomes:

How do we ensure that only trusted clients can talk to our backend?


🔴 Enter mTLS (Mutual TLS)

Unlike standard TLS:

  • Server presents a certificate ✅
  • Client verifies server

With mTLS:

  • Server presents certificate ✅
  • Client presents certificate ✅
  • Both sides verify each other

🔐 mTLS Flow

Client → Server: Hello
Server → Client: Certificate
Client → Server: Certificate (client identity)
Server → Client: Accept / Reject

Enter fullscreen mode Exit fullscreen mode


✔ What mTLS Solves

  • Strong client authentication
  • Prevents unauthorized clients (e.g. Postman, curl)
  • Removes reliance on API keys alone
  • Can partially replace VPN in some architectures

⚠️ Why mTLS Is Rare in Mobile

Because it’s operationally expensive:

  • Securely storing client certificates on device is hard
  • Certificates must be rotated
  • Risk of extraction on rooted/jailbroken devices
  • Complex provisioning process

👉 Most teams underestimate this complexity


🧩 Where mTLS Actually Makes Sense

Use it when:

  • Enterprise apps (controlled devices)
  • MDM-managed environments
  • Internal tools
  • High-security B2B systems

Avoid it for:

  • Public consumer apps
  • Apps distributed via App Store / Play Store
  • Large-scale unknown user bases

🧠 Real-World Alternative: Token-Based Security

Instead of relying on transport-level identity:

👉 Use application-level identity

App → HTTPS → API Gateway → Auth (JWT / OAuth) → Services

Enter fullscreen mode Exit fullscreen mode


✔ What This Solves

  • User authentication
  • Fine-grained authorization
  • Revocation
  • Scalability

🧱 Defense in Depth (What Actually Works)

A realistic production setup looks like this:

Mobile App
   ↓
TLS (HTTPS)
   ↓
(Optional) Certificate Pinning
   ↓
API Gateway
   ↓
Auth Layer (JWT / OAuth)
   ↓
Rate Limiting / WAF
   ↓
Microservices

Enter fullscreen mode Exit fullscreen mode


🔍 Common Mistakes in Mobile Security

Let’s be blunt:

❌ “We added SSL pinning, we’re secure”

No — you protected only the transport layer.

❌ Hardcoding API keys in the app

These will be extracted. Always.

❌ Trusting the client

The client is always hostile. Assume compromise.

❌ Ignoring backend validation

Security belongs to the backend, not the app.


🧠 When Mobile Security Fails

Not because of TLS.

But because:

  • Poor authentication design
  • Lack of rate limiting
  • Missing monitoring
  • Weak backend validation

🧭 Practical Recommendations

If you’re building a modern mobile app:

  1. Start with HTTPS (mandatory)
  2. Add proper authentication (JWT / OAuth)
  3. Introduce API Gateway controls
  4. Add rate limiting & monitoring
  5. Consider pinning as an extra layer
  6. Evaluate mTLS only if you truly need it

🧠 Final Takeaway

Security is not a feature — it’s a system.

Pinning protects the connection.
mTLS protects the client identity.
Backend security protects your business.

If you ignore the last one, the first two won’t save you.


👋 Closing

At this point, you’ve seen:

  • How to implement pinning on Android
  • How to implement it on iOS
  • And where it actually fits in a real-world architecture

Use it wisely.

And more importantly — design beyond it.