Моя независимая от языка рекомендация - убедиться, что база данных, которая взаимодействует с веб-приложением, доступна только для чтения;по крайней мере, для таблиц, которые имеют дело с этими остатками на счетах.Таким образом, вы обрабатываете платежи и управляете сокращением остатков на счетах в базе данных, которая не доступна никому, кроме вас (то есть не подключена к Интернету или этому веб-приложению).Вы можете периодически делать снимки этой базы данных и обновлять ту, которая взаимодействует с веб-приложением, чтобы у ваших пользователей была прочитанная копия их баланса.Таким образом, даже если пользователь может изменить данные, чтобы увеличить свой баланс на миллион долларов, вы знаете, что их истинный баланс находится в отдельном месте.По сути, вам никогда не придется доверять данным на стороне веб-приложения - они будут исключительно информационными для ваших пользователей.