User-supplied URLs
Fetch user-supplied URLs without opening a hole in your network
The moment your product fetches a URL a user typed, an attacker controls your outbound request. Link previews, feed importers, webhook testers and screenshot tools are the classic SSRF surface — Backfire makes the safe implementation the short one.
Where it goes wrong
Writing this yourself means a blocklist that is never quite complete: decimal and octal IP encodings, IPv4-mapped IPv6, DNS that answers differently on the second lookup, and a redirect that lands on 169.254.169.254. One missed case is a cloud credential leak.
What Backfire handles
- One request shape covers previews, feeds, JSON APIs and binary downloads.
- Blocked targets are refused with a machine-readable blocked_target code you can surface to the user.
- Redirects come back to you with their location header so you can decide, not the attacker.
- Each fetch is logged with the exact URL that was requested, which is what you need during an incident.
The request
example
POST /functions/forward
Authorization: Bearer backfire_…_api
{
"url": "https://example.com/article",
"method": "GET",
"timeout_ms": 8000
}
# refused before any connection is opened:
# { "ok": false, "error": { "code": "blocked_target" } }All use cases
Questions about this
Keep reading
Try it with 5,000 free trips.
No card, no subscription, and the balance never expires.

