Текущий этап: 05.08.23
Бэк:
— в общем-то готов к работе. Стартовые API (в смысле то, что точно нужно на запуске) готовы и наколенные тесты проходят
— в качестве БД используется SQLite, но я об этом, вроде, предупреждал. Этого достаточно для отладки и даже для малого числа участников
— несколько раз, не менее четырёх, переписывал хранение номеров телефонов и их запрос. Хочется свести к минимуму возможности утечек, но при этом помнить, что работаем на мобилке. Пока остановился на:
— хранятся только sha256 от e164 номеров: report.Number = fmt.Sprintf("%x", sha256.Sum256([]byte(report.Number))). Этот Number и кладётся в БД
— e164 ожидается только репорте спама. Он принимается только в API репорта: Number string `json:"number" validate:"required,e164"`. То есть при РЕПОРТЕ нельзя передавать не e164. Потому что репорт делается для плохих номеров — спамеров
— в ЗАПРОСЕ номера принимается ТОЛЬКО строка из ровно 40 символов: len(hash) != 40. То есть если кто-то со злым умыслом или по ошибке будет запрашивать чистые номера, бэк будет просто отбивать запросы. Сам nginx пока будет логгировать эти запросы, но это исправлю к релизу
— в ЗАПРОСЕ номера принимается ТОЛЬКО строка из ровно 40 символов: len(hash) != 40. То есть если кто-то со злым умыслом или по ошибке будет запрашивать чистые номера, бэк будет просто отбивать запросы. Сам nginx пока будет логгировать эти запросы, но это исправлю к релизу
— в ответ прилетит список подоходящих под запрос хешей из БД и статистика по ним: лайки, дизлайки, сколько отзывов. Клиентское приложение должно будет локально понять, что из пришедшего ему нужно было
— добавлена таблица "золотых" номеров. В неё буду вносить номера экстренных служб, типа 112, 911, 01 и всё такое. Золотые номера незлья зарепортить. Это сделано, чтобы злоумышленник не мог заблокировать номера экстренных служб
— добавлена, но пока не используется, таблица "плохих парней". Если на чьи-то репорты будут массовые жалобы (обжалование репортов тоже будет, да) — именно от разных пользователей (массовые от одинаковых просто игнорируются), автор репортов будет добавляться в базу плохих парней. И потом, если он действительно мудак сраный, его токен будет заблокирован