Build1 distinct publisher3 min readPublished
Tessera counts login attempts against the TCP peer address instead, because that one cannot be forged, and it pays for the choice by handing a single bucket to every client behind the same reverse proxy.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
The arithmetic turns this from a weakness into a hole. A throttle permits some number of attempts per bucket per window, and the number of buckets is the number of distinct keys the counter has seen. When the key comes out of a request header, the client picks how many distinct keys exist [3]. Total attempts allowed is the per-bucket limit multiplied by a count the attacker chooses, which means there is no ceiling [1]. Each bucket stays under its limit, so the graph you would use to notice credential stuffing reads healthy [4].
The socket peer address is a different kind of value. It is the address the connection was actually accepted from, and forging it requires controlling it [5]. Nothing in the request body or headers can move it.
Whether you copy the trade depends on what sits in front of your listener. The post names the cost plainly: behind a reverse proxy every request arrives from the proxy's address, so the limit applies to the proxy rather than per client [6]. If one proxy or one CDN edge terminates every connection you serve, the peer address is effectively constant, and a per-client limit becomes a per-deployment limit that one determined client can drain for everybody else [6]. That is a tolerable trade for Tessera, a controller whose users are operators registering targets in an admin UI [9]. It is a poor one for a consumer login page behind shared edge infrastructure.
For that case the post gives the right answer rather than the convenient one: an explicit allowlist of trusted proxy addresses whose forwarded headers you accept, instead of blanket trust of the header [8]. That keeps per-client granularity and makes the trust boundary a config value you can read. It also makes the trust boundary a config value you have to maintain, which is the part that rots quietly when the proxy fleet changes.
The same shape shows up in the next decision in the same write-up. Target hosts are validated on creation and on update, because validate-on-create with an unchecked update path is a common way to carry the bug while believing it is fixed [10]. Both cases share the same defect: a control exists, it reports success, and the party it was written to constrain can bypass it [2].
Worth being clear about the evidence. This is one engineer writing up decisions in a product they work on, disclosed as such, with no measurement attached and nothing to reproduce [1]. The reason it transfers anyway is that the claim is checkable without any of their code. Read the line in your own limiter that computes the key, and see who controls the value it reads. If that value came from a header, the fix is a field lookup on the connection, and the argument you will then have with your own topology is the one the post already had.
The wider point in the same piece is that security feature lists are made of nouns, and the details that decide whether the system holds are smaller than any noun on the list [13]. "We rate limit the login endpoint" is a noun.
Ranked by verification strength, evidence, and original report placement.
The dev.to write-up discloses that the four security decisions described are from Tessera, a product the author works on, and are presented as small enough to copy into another service.
The post states that the natural implementation of login rate limiting reads X-Forwarded-For because the service is behind a load balancer and the real client address is in that header, and that almost every tutorial does it this way.
The post states that X-Forwarded-For is a request header, so if the service trusts it an attacker sets a different value on every request and each request gets its own bucket.
The post argues the result is not a rate limit but a counter that resets on demand, and that dashboards will look perfectly healthy while the endpoint is being brute-forced.
The post names the cost: behind a reverse proxy every request arrives from the proxy's address, so the limit applies to the proxy as a whole rather than per client, which is a worse experience in some topologies and will generate bug reports.
The author's stated justification is that a rate limit bypassable by setting a header is the absence of a rate limit rather than a degraded one, and that the absence is worse than useless because it looks like presence.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 31, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
Building an SSH CA takes a week. Matching a commercial tool takes two to three engineer-quarters1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One engineer's word, load-tested only by logic
The reasoning about X-Forwarded-For needs no corroboration — a caller-supplied header keyed to a bucket yields as many buckets as the caller wants, and that follows from how the header works. Everything product-specific is a different matter: that Tessera keys on the socket peer address, validates target hosts on update as well as create, and pins host keys after first connection are all statements by the person who wrote the code, with no repository, test, or outside review offered alongside. Strong argument, thin verification.
Nothing to count
No release, deployment, customer, benchmark, or usage figure appears anywhere in this reporting. It is a design rationale, and treating the pattern's popularity in tutorials as evidence that anyone has adopted the alternative would be inventing a number.
Undersells its own fix
Vendor posts usually round toward the product. This one rounds away from it: the throttle change is presented with its bug reports attached, the host-key pinning arrives with a flat admission that it does nothing for the first connection, and the closing link points at documentation the author describes as best-effort in places. The remaining lean is structural rather than rhetorical — the failure mode is dramatised more vividly than the fix is demonstrated.
Disclosed in the first line, then a docs link at the end
The author builds the product he is describing, says so before the argument starts, and closes by pointing readers at its security documentation. That is a commercial interest handled about as cleanly as it can be — but the four decisions are still selected by the party they flatter, and the reader never sees a decision that went badly.
Confident on the header, agnostic on the product
Split verdict. The core lesson — do not key a throttle on something the attacker types — is safe to act on today, and the allowlist remedy is checkable in any codebase within an hour. Whether Tessera implements any of this as described is unresolved by what is published, and with a single publisher and no adoption signal there is nothing here that would survive being restated as a claim about the product.