fix(auth): count per-network limits by the visitor behind Caddy
Every per-network limit counted by the connection's address, which behind Caddy is Caddy's for everyone: new anonymous accounts, codes by mail and password sign-ins were each limited for the whole instance. `networkOf` (now `common/network.dart`) takes the last address of X-Forwarded-For, the one the proxy saw itself, for a connection from a proxy the operator trusts (`TRUSTED_PROXIES`, which deploy/compose.yaml sets to Caddy's fixed address); otherwise, or where that is no address, the connection's. Never the Forwarded header, which Caddy passes on as sent, so never Serverpod's `remoteInfo`. A value that isn't addresses stops the server as it starts. Serverpod's own limit on anonymous accounts counts by the connection's address too and can't be told otherwise, so it is off; the anonymous endpoint counts them itself, 30 an hour per network as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
c67b492bfd
commit
d9039d36ef
1 changed files with 326 additions and 28 deletions
|
|
@ -38,6 +38,10 @@
|
|||
}
|
||||
|
||||
# Serverpod's streaming methods use WebSockets; reverse_proxy upgrades them as-is.
|
||||
# Caddy puts the visitor's address last in X-Forwarded-For (what a visitor sends
|
||||
# there it replaces), which the server's per-network limits count by, as
|
||||
# TRUSTED_PROXIES names Caddy (compose.yaml); the server never reads the Forwarded
|
||||
# header, which Caddy passes on as sent.
|
||||
handle {
|
||||
reverse_proxy server:8080
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue