Собственно, сессия также - подвержена данным проблемам, ее id также хранится в cookie.
В большинстве случаев - используются цифровые отпечатки. Если человек зашел из Китая, при постоянном посещении из РФ - будет подозрительно, сюда же можно отнести проверку user-agent. По сути - идеального решения не существует, ну, или я недостаточно осведомлен.
JWT - если украсть access токен, то какое-то время он будет валиден, если хранить, все в бд - смысл jwt исчезает.
OAuth - украл токен, можно использовать.
Все сводится к дополнительной верификации по косвенным параметрам.