All twenty problems
B2What the client asks

“What happens if we get hacked?”

Rate limits. Brute-force lockouts. A second factor. Encryption for the columns that deserve it. A credible answer when a credential leaks.

What actually goes wrong

The question is asked once, early, and answered with a sentence. The work behind the sentence is weeks, and it is invisible, so it is the first thing cut when a feature is due.

The sign-in form alone needs a rate limit, a lockout, a growing delay, and a locked account that answers exactly like a wrong password, or it becomes an oracle for discovering who has an account.

What Grit does about it

  • Sessions are server-side, so a device can be revoked and a reused refresh token kills the chain it came from.
  • The sign-in form has four layers, including the one people miss: a locked account answers like a wrong password, on the same timing.
  • A security suite with a firewall, rate limiting and an anomaly log is mounted at /sentinel, with its threat log in your own database.

The commands

Check the configuration before you deploy
grit doctor
Already running
grit start
# http://localhost:8080/sentinel

What it does not do

None of it protects a leaked admin password that nobody rotates, or a server nobody patches. A framework can close the application’s doors, not the operational ones.

Read next