Tuning without dials: which lever to reach for first

There is no strictness scale here to raise or lower. Tuning means changing specific things: which rules apply and where, which requests are exempted, and where limits are set. That makes each change slower to decide and far easier to undo, and it changes which lever you should reach for first.

Section Operations Updated Levers three

Why a scale would not help

The expectation comes from a familiar model, and the model has a defect.

A strictness setting promises one decision instead of many. Its cost is that nobody can say what a position on it means: moving from one level to the next changes a large number of individual decisions at once, in ways that differ per site, so the effect cannot be attributed to anything. When something breaks afterwards, the available explanation is that the level is now higher, which is not an explanation.

The absence of a scale forces the opposite habit. Every change names a rule, a route, a request, or a limit, and every change can therefore be tested, reversed, and explained to somebody who was not there. That is slower on the day and much faster over a year.

The three levers

Everything you can adjust is one of these.

Which rules apply, and where. The scope of a rule is a decision: a rule that belongs on a form does not necessarily belong on a static URL path, and narrowing where it applies is a change with an obvious meaning.

Which requests are exempted. The narrow carve-outs for the cases where your own content or a known integration collides with a rule. These are covered by exceptions, including the part that matters most, which is that each one carries a date.

Where limits are set. Rate limiting is applied to the domain, and what that means in practice, along with how to choose a limit at all, belongs to rate limiting.

Which lever to reach for first

Four rungs, and the first is the one people skip because it is not a filtering change at all.

Change your own thing. Where a rule collides with your content, the first question, before any configuration, is whether your side is doing something it does not need to do: a form accepting raw HTML it never displays, an integration sending unsigned HTTP requests it could sign, a route accepting a method it does not use. Fixing that removes the collision permanently and improves the site independently of any filtering.

Narrow where the rule applies. If the collision is real and your side is correct, restrict the rule to the URL paths where it earns its place. This keeps the protection and removes the mismatch, and it stays true when the site grows.

Write an exception. Narrow, owned, dated. Correct when the collision is specific and legitimate, and the right answer for integrations and callbacks that will not change for you.

Change something broadly. Last, deliberately, and rarely. A broad change is the only one whose effect you cannot fully predict, so it belongs at the end of the list rather than at the start, where it usually appears because it is the quickest thing to do at the moment somebody is complaining.

A RULE COLLIDES WITH YOUR OWN CONTENT 1 · CHANGE YOUR OWN THING NOT A FILTERING CHANGE AT ALL FIXES IT PERMANENTLY, AND IMPROVES THE SITE BELOW THIS LINE: FILTERING CONFIGURATION 2 · NARROW WHERE IT APPLIES KEEPS THE PROTECTION, REMOVES THE MISMATCH 3 · WRITE AN EXCEPTION NARROW, OWNED, DATED 4 · CHANGE SOMETHING BROADLY THE ONLY ONE WHOSE EFFECT YOU CANNOT PREDICT // the first rung is skipped because it is not a filtering change at all
// a broad change appears first in practice because it is quickest at the moment somebody complains

Making one change safely

Three habits, and they are the same ones that make a rollout survivable.

One change at a time, stated in a sentence. Two changes made together produce an outcome that belongs to neither.

Watched for a cycle of the route it affects, not for a fixed period, since a route used on weekdays and an integration that runs nightly reveal themselves on different schedules. That reasoning is set out under staged rollout.

Recorded with its date and its reason. The report that tests your change arrives days after you make it, and the only question it raises is what was different that day.

What not to tune

Two things, and both are common.

A single event. One probe, one scanner, one odd request from an address that never returns is not a signal. Tuning in response to it optimises your configuration for something that already stopped, and every such change is permanent until somebody removes it.

The count of entries. Tuning until the record is quiet is tuning toward a log that tells you nothing. Entries are the instrument, not the fault; a configuration producing no entries is either seeing no hostile traffic, which is unlikely, or has been adjusted until it stopped reporting. The second is indistinguishable from the first at the moment you achieve it and very distinguishable later.

A RECORD WITH NO ENTRIES NO HOSTILE TRAFFIC UNLIKELY ADJUSTED UNTIL IT STOPPED REPORTING THE INSTRUMENT WAS TURNED OFF, NOT THE THREAT ON THE DAY: INDISTINGUISHABLE LATER: VERY DISTINGUISHABLE
// entries are the instrument, not the fault

When to tune again

Tuning is not a setup step, because the fit degrades from your side rather than theirs.

Come back to it when the site changes in a way that changes traffic: a new form, a new integration, a market that brings visitors from somewhere your rules have never seen, an application rewritten to send different requests. In each case the configuration did not change and stopped fitting anyway.

The cheap version of this is a short observation after each such change, on the affected routes only, rather than a periodic review of everything. The expensive version is discovering the mismatch through a customer months later.

Questions

How do I make filtering stricter or less strict?

There is no scale to move. You change which rules apply and where, which requests are exempted, and where limits are set, and each of those is a specific statement rather than a position on a range. The result is slower to decide and much easier to reverse when it turns out to be wrong.

A rule keeps colliding with my own content. What first?

Check whether your side needs to do the thing that trips it, since a form accepting content it never displays is a problem worth fixing regardless. Then narrow where the rule applies. An exception comes after those two, and disabling anything broadly comes last.

Should I tune after seeing a suspicious request?

Not after a single one. One probe from an address that never returns is not a pattern, and a change made in response to it stays in your configuration long after the event that prompted it is forgotten. Wait for the pattern, then change one thing.

How do I know the tuning is finished?

It is not a state you reach. The configuration fits the site as it is now, so a new form, a new integration, or a new audience puts it out of fit without anybody touching it. A short observation after each such change is what keeps it current.

Where the platform sits

Three positions and nothing between them. What you adjust is the specific, and every adjustment can be stated in a sentence.

off

Nothing is inspected. The state to return to if a change goes badly wrong.

monitor

Where a change is watched for a cycle of the route it affects, before it refuses anything.

block

The change is live. One at a time, recorded with its date and its reason.