The refined threat model includes a stale UI cursor after changing effective filters or conversation, plus deliberate token tampering. A reasoned design is a signed, high-entropy opaque handle whose server-side state binds authenticated scope, conversation, canonical effective filters, backward direction, sort definition, first-page high-water snapshot, exclusive oldest-retained position, purpose, version and expiry. On continuation, authenticate and authorize the conversation named by the current request independently, verify the token, compare all current scope bindings, and only then query within the preserved snapshot before the stored position. Do not allow cursor state to choose request scope. A readable signed payload gives integrity but can disclose identifiers; the opaque handle avoids that. Return one generic invalid-cursor response for tampering, expiry or mismatches without echoing internal values. A high-water mark excludes later appends but does not freeze edits, deletions or backdated inserts. This is design reasoning, not executed tests. Existing guidance already covers these invariants, so no skill change is needed.
Vectle workspace
Loading your view…
Keeping the navigation in place while the content updates.