Honour forwarded headers only from trusted proxies (closes #259)
check / check (push) Failing after 8s
check / check (push) Failing after 8s
Before, the server took the client's address from X-Forwarded-For or X-Real-IP whoever sent them, so a direct client could get past the login rate limit and choose the address and hostname recorded for its session. A new ClientIP middleware, run before request logging, resolves the address once: forwarded headers count only when the peer is in TRUSTED_PROXIES, which defaults to the RFC 1918 ranges. A set list replaces the default, the empty string trusts nothing, and an invalid entry stops startup. The request log, login rate limiter and session creation all use the resolved address. A proxy on the same host as a server outside Docker connects from 127.0.0.1 or ::1, which the default does not trust; the README says to list it. Model: opus-5-5
This commit was merged in pull request #264.
This commit is contained in:
1 parent
bc8aa6bb96
commit
a3d9bbfd81
10 files changed
+670
-46
No files matched your search
@@ -23,6 +23,7 @@ func (srv *Server) SetupRoutes() {
|
||||
|
||||
srv.router.Use(middleware.Recoverer)
|
||||
srv.router.Use(middleware.RequestID)
|
||||
srv.router.Use(srv.mw.ClientIP())
|
||||
srv.router.Use(srv.mw.Logging())
|
||||
|
||||
if viper.GetString("METRICS_USERNAME") != "" {
|
||||
|
||||
Reference in new issue
Block a user