Skip to content

Commit 5e96063

Browse files
committed
docs: add SSRF protection section to README
Clarifies that: - SSRF protection works automatically without configuration - All private IPs and localhost are blocked by default - Optional FEED_PROXY env var for enhanced security in production - Protection applies to all requests including redirects
1 parent 380fae6 commit 5e96063

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

README.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,32 @@ curl -X 'GET' \
5151
To use the self-hosted frontend, you should change `apiBaseUrl` in
5252
`frontend/static/app.js` to match the backend URL.
5353

54+
### Security
55+
56+
#### SSRF Protection
57+
58+
RSS Filter includes built-in protection against Server-Side Request Forgery (SSRF) attacks. When fetching feeds, the application automatically blocks requests to:
59+
- Private IP ranges (192.168.x.x, 10.x.x.x, 172.16.x.x-172.31.x.x)
60+
- Localhost (127.x.x.x, ::1)
61+
- Link-local addresses (169.254.x.x)
62+
- AWS metadata service (169.254.169.254)
63+
64+
This protection works **automatically for basic setups** - no configuration needed. The application validates DNS resolution for all requests, including redirects.
65+
66+
#### Enhanced Security with Proxy (Optional)
67+
68+
For additional security in production environments, you can route all feed requests through a proxy that only allows external hosts:
69+
70+
```yaml
71+
# docker-compose.yaml
72+
services:
73+
backend:
74+
environment:
75+
FEED_PROXY: http://gluetun:8888 # Your proxy service
76+
```
77+
78+
Using a proxy provides defense-in-depth by enforcing network-level isolation.
79+
5480
### Architecture
5581
5682
The application consists of several services:

0 commit comments

Comments
 (0)