• Как правильно организовать и защитить таблицу в которой будет хранится balance пользователя?

    ksusha
    @ksusha

    Зачем вам вообще хранить какой-то статус? При легальном апдейте баланса через приложение подписывайте все значащие данные в таблице баланса, передавая процедуре (или в запрос) какой-нибудь ключ. Подпись хранится в отдельном поле таблицы. Скажем, конкатенируете баланс и секретный ключ, берете sha1 от них - это подпись. При уменьшении баланса - такая же процедура: проверка подписи, если все ок - уменьшение баланса и подпись изменившихся данных. Если при попытке изменения баланса подпись не сходится, значит данные поломаны. Таким образом, не зная секретного ключа злоумышленник не сможет внести легальные изменения в таблицу балансов.
    Правда, в этом случае вам надо обеспечить сохранность ключа, хранить на диске не очень секьюрно.

    Кстати, тут все почему-то подумали о злобных хакерах со стороны. Не забываем, что сами сотрудники, имеющие доступ на продакшн, могут оказаться злоумышленниками. Когда речь идет о реальных деньгах нельзя полагаться на пушистость сисадминов/разработчиков.

    Ответ написан
    8 комментариев