#

Security

3 posts

Restorable but not shareable: hiding a token in history.state

A result that survives refresh and the back button but cannot be shared by copying the URL. A forgotten browser API, a header, and one deliberate deletion.

Sep 01, 20266 min readFrontend
Restorable but not shareable

Our rate limits were bypassed by a trailing slash

Five tuned Rack::Attack throttles, all matching the path exactly. Rails normalised the path after they ran, so a dot-json or a trailing slash bypassed every one.

Sep 01, 20265 min readRails
A turnstile in an empty station with an open gap in the railing right beside it.

Treat model output like user input

When strangers write the prompt and the answer renders on your page, you have two untrusted boundaries back to back. The layered posture we settled on.

Sep 01, 20265 min readLlm
Two Trust Boundaries; One System.