image
Greenwallet Exchange — сервис международных денежных переводов. Через телеграм-бота Greenwallet можно оплатить товары в Китае или отправить перевод в любую точку мира. При знакомстве с кодом проекта мы обнаружили проблемы в безопасности. Для хранения данных использовалась СУБД MySQL. В структуре таблиц отсутствовали внешние ключи, что не позволяло контролировать целостность базы данных. Это значит, что через меню бота можно было удалить объекты из справочников, на которые ссылались существующие сделки. Через эту лазейку нельзя похитить личные данные или средства пользователей, но без устранения этой уязвимости злоумышленники могли нарушить работу сервиса. Чтобы обезопасить сервис, мы предложили заказчику перейти на PostgreSQL и добавить внешние ключи для таблиц базы данных. Переход на PostgreSQL был обусловлен следующими факторами: соответствие стандарту SQL; поддержка баз данных без ограничения на объем данных; поддержка триггеров по бÓльшему количеству команд; поддержка функциональных индексов; поддержка расширенных типов данных, включая массивы, hstore, JSON, XML; лучшая обработка операций записи данных, в том числе с валидацией записываемых значений; возможность создавать более сложные структуры табличных данных; сохранение целостности данных. После этого мы внесли изменения в большинство сценариев создания, изменения, удаления объектов из справочников.
https://softorium.pro/cases/Kak_my_sdelali_iz_pet_proekta_mezhdunarodnyi_valiutnyi_servis