Slide 3 of 28
Part 1 · What Is It?Slide 3
Slide 3 · The Trust Model
Third-party APIs feel different from user input. That feeling is wrong — and attackers know it.
Why the implicit trust in third-party responses exists, and why it’s misplaced.
🤝
“They’re a reputable company”
Stripe, Google Maps, Twilio, Auth0 — these are well-known vendors with security teams. The developer’s mental model: their API output must be safe to use. But even reputable vendors can be compromised, have bugs in their own data handling, or have their CDN files tampered with. Reputation is not a substitute for validation.
📜
“It’s structured data — JSON/XML”
Third-party responses are machine-generated, structured, and typed — so developers assume the values are safe. But the format being JSON doesn’t mean the values are safe for SQL queries, HTML rendering, or log processing. A JSON string field can contain SQL injection, XSS payloads, or JNDI lookup strings.
“Validating it would break things / slow us down”
Third-party responses have schemas the developer doesn’t fully control. Applying strict validation risks breaking the integration when the vendor makes a schema change. Developers often choose flexibility over security — accepting whatever the API sends and processing it directly.
📦
“The integration code was written once and never reviewed”
Third-party integration code is often written in an initial sprint, works, and is never touched again. Security reviews focus on new features and changed code — stable integration adapters are invisible. The code that processes third-party responses may have no input validation because nobody went back to add it.
🔗
“We’re contractually trusting them”
Third-party APIs require terms of service acceptance. There’s an implicit sense that the vendor is contractually responsible for their output being safe. But a contract doesn’t prevent a breach. When the vendor’s CDN is compromised, the malicious data flows through the same trusted channel — regardless of what the contract says.
← Back What third-party APIs do you trust? →