Server-Side Request Forgery (SSRF) is a class of attack where an attacker tricks a service into making HTTP requests to internal addresses — cloud metadata endpoints, internal APIs, or localhost services — that should not be reachable from outside. HTTP buttons execute outbound HTTP requests. By default, Buttons blocks any request that resolves to a private network address.Documentation Index
Fetch the complete documentation index at: https://docs.buttons.sh/llms.txt
Use this file to discover all available pages before exploring further.
Blocked address ranges
The following ranges are blocked by default:| Range | Description |
|---|---|
127.0.0.0/8 | IPv4 loopback |
10.0.0.0/8 | RFC 1918 private |
172.16.0.0/12 | RFC 1918 private |
192.168.0.0/16 | RFC 1918 private |
169.254.0.0/16 | Link-local (includes AWS/GCP metadata: 169.254.169.254) |
::1/128 | IPv6 loopback |
fc00::/7 | IPv6 unique local |
fe80::/10 | IPv6 link-local |
SCRIPT_ERROR:
DNS rebinding protection
Validation happens after DNS resolution, not just on the literal URL. This prevents DNS rebinding attacks, where a public hostname resolves to a private IP. If the hostnameapi.attacker.example resolves to 10.0.0.1 at press time, the request is blocked even though the URL does not look like a private address.
Escape hatch 1: per-button flag
To allow a specific button to target a private address, pass--allow-private-networks at create time:
Escape hatch 2: environment variable
To allow all HTTP buttons to target private networks in a given environment, set:Example: internal service in a container network
Related
- HTTP API buttons —
--allow-private-networksflag reference - Security overview — full threat model
- Template encoding — injection protection for URL and body values