0.3.8
This commit is contained in:
1 parent
50b53e72f0
commit
439cc20dcf
6 files changed
+110
-8
No files matched your search
@@ -127,3 +127,32 @@ Jeżeli docelowy serwer ma inną architekturę/endianness niż źródłowy x86_6
|
||||
- build z `-trimpath` i usuniętymi symbolami/debug info.
|
||||
|
||||
Nie da się zagwarantować, że stos technologiczny będzie całkowicie nierozpoznawalny na podstawie zachowania sieci/TLS. Celem jest brak prostych bannerów, wersji i sygnatur frameworka.
|
||||
|
||||
## Rate limiting
|
||||
|
||||
Domyślnie **wyłączony** (`RATE_LIMIT_ENABLED=false`) — endpointy mają limity
|
||||
zahardkodowane w kodzie od początku, ale same w sobie nie chronią niczego
|
||||
krytycznego (ServerQuery i tak ma własny timeout, `channelcreate` i tak
|
||||
wymaga poprawnego tokenu CSRF), a przy nietypowym ruchu (kilku odwiedzających
|
||||
za tym samym IP/NAT, kilka kart, lightbox z wykresami) dawały false-positive
|
||||
`429` bez realnej korzyści. Włącz (`RATE_LIMIT_ENABLED=true`), jeśli chcesz
|
||||
dodatkową warstwę ochrony przed nadużyciami na konkretnym endpoincie.
|
||||
|
||||
Każdy limit jest per-IP (po rozwiązaniu `TRUSTED_PROXIES`/`X-Forwarded-For`,
|
||||
patrz `clientIP()` w `internal/web/server.go`) i liczony w oknie czasowym
|
||||
podanym w nawiasie:
|
||||
|
||||
| Zmienna | Endpoint | Domyślnie | Co chroni |
|
||||
|---|---|---|---|
|
||||
| `RATE_LIMIT_STATS` | `GET /stats` (na minutę) | 60 | render strony statystyk |
|
||||
| `RATE_LIMIT_STATS_LIVE` | `GET /stats/live` (na minutę) | 60 | auto-odświeżanie licznika online co 60 s |
|
||||
| `RATE_LIMIT_GRAPH` | `GET /graph/*.png` (na minutę) | 600 | wykresy RRD — PNG są cache'owane na dysku ~55 s, więc limit jest wysoki: jeden widok strony sam zużywa 6 zakresów × 2 motywy, a NAT/kilka kart to łatwo pomnoży |
|
||||
| `RATE_LIMIT_CHANNEL` | `POST /channel/create` (na minutę) | 40 | tworzenie kanału |
|
||||
| `RATE_LIMIT_VERIFY` | `POST /verify/start` (na minutę) | 10 | start weryfikacji nicku (NAT) |
|
||||
| `RATE_LIMIT_VERIFY_DONE` | `POST /verify/complete` (na minutę) | 10 | wpisanie 6-cyfrowego kodu |
|
||||
| `RATE_LIMIT_CREATE` | `POST /channel/create` po weryfikacji (na godzinę) | 5 | utworzenie kanału po weryfikacji nicku przez NAT |
|
||||
|
||||
Przy przekroczeniu limitu endpoint odpowiada `429 Too Many Requests` z
|
||||
nagłówkiem `Retry-After: 60`. Wartości domyślne są w `.env.example` i
|
||||
`packaging/ts3monolith.default` — dostosuj je do realnego ruchu na danej
|
||||
instalacji zanim włączysz `RATE_LIMIT_ENABLED` na produkcji.
|
||||
Reference in new issue
Block a user