Базовая модель
Один запрос может быть нормальным, злоупотребляющим или опасным. Контекст решает все
В безопасности недостаточно сказать: "Я получил профиль через API". Нужно установить, кому профиль предназначался, была ли авторизация, какие поля вернулись, обошел ли запрос серверное правило и в каком масштабе он повторялся.
Открытый дейтинг по определению показывает анкеты другим участникам. Сервер принимает запрос, выбирает подходящую карточку, отдает имя, описание, город, интересы и опубликованные фотографии. Это полезная функция. Тот же запрос становится проблемой, если через него можно получить закрытые чаты, платежные сведения, служебные поля или контент, который пользователь не публиковал.
Видимость
Кому разрешено видеть конкретную анкету и ее публичные поля.
Полномочие
Какие действия разрешены вошедшему пользователю: лайк, жалоба, сообщение.
Масштаб
Сколько карточек и действий можно получить за время и с одного аккаунта.
Секретность
Какие данные остаются закрытыми независимо от интерфейса и тарифа.
Граница данных
Публичная анкета не равна публичному аккаунту целиком
Пользователь публикует анкету, чтобы его могли найти. Поэтому фотография, имя, возраст из анкеты, описание и выбранные интересы предназначены для показа другим людям в сервисе. В этой модели нет логического противоречия: видимость является целью размещения.
Одновременно сервис хранит данные, которые не предназначены для общего просмотра: токены доступа, историю модерации, платежные записи, внутренние признаки, личные переписки и технические журналы. Вот между этими группами и проходит реальная граница безопасности.
Показываются участникам по назначению продукта.
Не должны раскрываться постороннему пользователю.
Доступ зависит от продукта, тарифа и согласия.
Доступны только серверу и уполномоченным сотрудникам.
Называть весь ответ API "персональными данными в открытом доступе" без разбора полей - все равно что называть витрину магазина взломанным складом. Витрина действительно видна. Но это ничего не доказывает о доступе к подсобным помещениям.
API без мистики
API - это способ связи интерфейса с сервером, а не отдельная дверь для хакера
Когда человек нажимает кнопку в Instagram, TikTok, Telegram или Mimolet, приложение отправляет запрос. Этот запрос можно увидеть в инструментах разработчика. Сам факт, что его можно повторить вручную, не говорит об обходе защиты. Защита должна находиться на сервере, потому что любой клиент можно изменить.
Правильный вопрос звучит не "можно ли вызвать API", а "проверяет ли сервер личность, статус, разрешение и лимит при каждом вызове". Если проверяет, технический клиент получает ровно те же полномочия, что и обычный интерфейс. Если не проверяет, тогда появляется содержательная проблема.
Безопасность API определяется не тем, можно ли отправить запрос, а тем, можно ли получить больше прав, чем сервер выдал пользователю.
Лайки и открытый дейтинг
Возможность лайкнуть известный публичный профиль - это нормальная продуктовая механика
Дейтинг существует для того, чтобы люди находили друг друга и выражали интерес. Если участник уже увидел публичную анкету в ленте, топе, поиске или по внутренней ссылке, возможность поставить реакцию логична. Неважно, отправил запрос официальный интерфейс или другой технический клиент: полномочие определяет сервер.
Фраза "через API можно лайкнуть любого" требует трех уточнений. Во-первых, речь идет о существующем публичном профиле, а не о доступе к чужому аккаунту. Во-вторых, запрос делает авторизованный пользователь от собственного имени. В-третьих, он остается внутри серверных лимитов и правил.
В текущем Mimolet лайки ограничиваются сервером по тарифу: 60, 250, 500 или 1200 действий в день. Поэтому возможность обратиться к маршруту реакции не равна безграничной возможности массово действовать.
Публичные фотографии
Если фото показано на экране, его можно сохранить. Ни одна соцсеть не способна отменить этот факт
Чтобы показать изображение, сервер обязан передать его браузеру или приложению. После передачи пользователь может сделать скриншот, записать экран, открыть кэш, перехватить сетевой ответ или сфотографировать дисплей другим устройством. Это не особенность Mimolet. Так работает публичный контент в Instagram, TikTok, Telegram и на обычных веб-сайтах.
Presigned URL полезен, когда нужно ограничить время доступа к исходному объекту. Он затрудняет повторное использование старой ссылки, но не стирает уже полученный файл. Запрет правой кнопки скрывает меню, но не защищает данные. Водяной знак помогает расследованию, но не запрещает копирование. DRM усложняет массовое извлечение видео, но тоже не блокирует запись экрана.
Посетитель не получает каталог всего хранилища.
UUID мешает угадывать ссылки по последовательному ID.
Лимиты и поведенческие сигналы повышают цену сбора.
Доставленный человеку пиксель уже вышел за границу сервера.
Честная безопасность не продает физически невозможное обещание. Она минимизирует лишнюю выдачу, разделяет публичное и закрытое, усложняет массовый сбор и быстро реагирует на злоупотребление.
Объектное хранилище
Доступ к конкретному публичному файлу и листинг всего S3-бакета - принципиально разные режимы
Публичная фотография должна открываться по точному URL, иначе карточка будет пустой. Но из этого не следует, что сервер обязан показать список всех файлов. Листинг - отдельная операция, которая раскрывает структуру и имена объектов. Именно ее имеет смысл закрывать.
Сегодня анонимный листинг бакета Mimolet закрыт и возвращает HTTP 403. Текущие новые медиа используют UUID-имена, а закрытые превью входящих лайков не содержат реальный ID пользователя в пути. Это уменьшает возможность угадывать соседние объекты. При этом точная ссылка на фотографию публичной анкеты остается доступной по назначению.
Скрейпинг без магического мышления
Автоматизацию нельзя уничтожить. Ее можно сделать дорогой, ограниченной и заметной
Скрипт способен повторять действия пользователя. Чем публичнее сервис, тем больше поверхностей для автоматизации. Поисковики сканируют страницы, аналитические системы собирают цены, маркетинговые инструменты анализируют соцсети, а злоумышленники имитируют браузер. Универсального переключателя "запретить скрейпинг" не существует.
Rate limit снижает скорость, но распределенный сбор использует множество адресов и аккаунтов. CAPTCHA отсеивает простые скрипты, но ухудшает доступность и решается внешними сервисами. Привязка к устройству помогает, но создает проблемы при смене телефона. Поэтому защита строится слоями и соразмерно реальному риску.
Анонимный посетитель не получает пользовательскую ленту.
Количество чтений и действий ограничивается на сервере.
UUID и курсоры не дают простого последовательного перебора.
Частота, шаблоны и аномалии помогают обнаружить автоматизацию.
Из утверждения "автоматизация возможна" не следует "получена закрытая база". Между ними находятся тип данных, полномочия, скорость, полнота выборки и способность обойти защитные бюджеты. Публикация на Хабре перескакивает через эти ступени и сразу выбирает самое тревожное название.
Терминология
IDOR начинается не с числового ID, а с нарушения объектного разрешения
IDOR - это ситуация, когда изменение идентификатора позволяет получить объект, к которому у пользователя нет права доступа. Важна не форма ID и не возможность изменить URL, а именно отсутствие проверки полномочия.
Если любой участник вправе видеть публичный профиль, запрос этого профиля по известному идентификатору сам по себе не доказывает IDOR. Если тем же способом раскрывается скрытая анкета, чужая переписка, неопубликованный файл или служебное поле, тогда граница действительно нарушена.
Идентификаторы почти всегда передаются клиентом.
Право доступа уже существует по модели продукта.
Сервер не проверил связь пользователя и объекта.
Даже публичный объект не должен отдавать внутренние данные.
Сессии, устройства и блокировки
Несколько активных сессий - нормальная функция. Session fixation - конкретная атака
Пользователь может войти с телефона, браузера и Telegram Web. Каждое устройство получает свою сессию. Сам факт одновременной работы нескольких токенов не говорит, что злоумышленник навязал жертве заранее известный идентификатор. Без этого механизма термин session fixation применен неверно.
Жесткая привязка к IP тоже не является универсальной "базовой защитой". Мобильный адрес меняется между вышками, CGNAT объединяет тысячи людей, VPN переключает выходные узлы. Такая проверка создает массовые ложные выходы и почти не помогает против атакующего в той же сети.
Содержательная проверка другая: может ли заблокированный аккаунт продолжать защищенные действия. Текущий API Mimolet проверяет статус блокировки на каждом авторизованном запросе. То есть решение принимает сервер, а не экран, на который перенаправили пользователя.
Исторический код и текущий продукт
Техническая статья устаревает, если продолжает описывать удаленные маршруты как современную архитектуру
Первая публикация строит значительную часть выводов на нескольких PHP-файлах и отрицательном offset. Сегодня эти точки входа не обслуживают продукт. Текущий Mimolet работает через другой API с обязательной авторизацией и серверными проверками.
profile_view.php404маршрут удаленfeed_classic_api.php404маршрут удаленtest.php404диагностический файл удаленТекущие 404 не переписывают историю и не доказывают состояние конкретного дня в прошлом. Они доказывают другое: использовать старые маршруты как описание нынешнего продукта нельзя. Для актуального вывода нужно повторять тест на актуальной архитектуре.
От сетевого запроса к фантазии о бизнесе
API не показывает договоры, бухгалтерию, рекламодателей или банковские счета
Из количества собранных профилей нельзя вывести месячную аудиторию. Из количества подписчиков Telegram-канала нельзя вывести число активных пользователей приложения. Из адреса регистрации ООО нельзя вывести налоговое нарушение. Из сетевого трафика нельзя увидеть несуществующие договоры с рекламодателями.
Тем не менее публикация соединяет эти разные числа в историю о продаже рекламы, "левых счетах", инвесторах и намеренно ослабленной безопасности. Ни один из этих выводов не подтвержден доступом к договорам, банковским данным, бухгалтерии или аналитике компании.
У продукта нет рекламодателей и рекламной выручки.
Сервис принадлежит и управляется ООО "Дейтинг".
Утверждение автора не основано на платежных документах.
Город разработки и адрес юрлица не являются техническим доказательством схемы.
Технический тест может доказать ответ сервера. Он не может без дополнительных источников доказать мотив владельца, движение денег или отношения с рекламодателями.
Баллы, эмодзи и авторитетный вид
CVSS измеряет конкретную уязвимость по вектору. Это не шкала эмоциональности текста
Оценка CVSS складывается из формальных параметров: доступность по сети, сложность, требуемые привилегии, участие пользователя, влияние на конфиденциальность, целостность и доступность. Чтобы число можно было проверить, публикуют полный вектор и точные условия эксплуатации.
В исходном тексте рядом с самоназначенными числами появляются "уголовное дело", "потеря рекламодателей" и "блокировка платежных шлюзов". Эти утверждения не являются параметрами CVSS и не следуют автоматически из технической находки. Особенно показателен прогноз потери рекламодателей у продукта, который рекламу не продавал.
Правовая квалификация тоже требует фактов о составе данных, режиме обработки, действиях оператора и применимом праве. Подпись "нарушение ФЗ-152" под таблицей не превращает частное мнение в решение регулятора или суда.
Проверяемый пример из второго поста
Баннер Exim показал базовую версию, но автор выдал ее за полную ревизию Ubuntu
Второй пост использовал строку Exim 4.97 Ubuntu как доказательство CVE-2026-45185. В дистрибутивах Linux это недостаточно: исправления часто бэкпортируются без смены базовой версии программы. Внешний баннер не показывает суффикс пакета Ubuntu.
Официальная карточка Ubuntu указывает, что для Ubuntu 24.04 исправление вошло в 4.97-4ubuntu4.5. На сервере эта ревизия была установлена 14 мая, следующая .6 - 3 июня. Пост опубликован 27 июня. Значит, проверяемый вывод об "уязвимой версии" был неверен уже на дату публикации.
Качество исследования
Большой дамп не заменяет минимальное доказательство, а AI-стиль не заменяет проверку
Для подтверждения ошибки обычно достаточно минимального воспроизведения на собственных или специально созданных данных. Массовое скачивание тысяч анкет не делает механизм более доказанным. Оно лишь увеличивает количество чужих данных у исследователя и масштаб последствий его собственных действий.
Текст публикации содержит заметные признаки генерации или тяжелой AI-редактуры: повторяющиеся матрицы severity и business impact, однотипные аналогии, эмодзи-оценки, шаблонные резюме и уверенные выводы при пропущенных источниках. Это не доказывает конкретную модель, но помогает понять, почему форма выглядит убедительнее содержания.
Месячная аудитория измеряет события входа, а не размер одного полученного набора.
По агрегированному диапазону нельзя напрямую вывести заявленный процент детей.
Но каждый факт все равно должен иметь воспроизводимую проверку.
Собирать все доступное не требуется для ответственного сообщения о баге.
Что имеет значение сегодня
Реальная безопасность Mimolet оценивается по текущим границам, а не по архивной драматургии
Ни один живой сервис не заканчивает работу над защитой. Лимиты уточняются, антибот-сигналы усиливаются, старые маршруты удаляются, права доступа получают регрессионные тесты. Но бесконечное стремление к недостижимой абсолютной защите не должно подменять бизнес-реальность открытого продукта.
- Текущие профиль и лента требуют авторизацию и без входа возвращают 401.
- Упомянутые legacy-маршруты и диагностический файл удалены и возвращают 404.
- Статус заблокированного пользователя проверяется на каждом API-запросе.
- Лайки ограничиваются сервером, а не только интерфейсом.
- Бесплатные входящие лайки не раскрывают реальный ID, имя и исходный путь фото.
- Публичный листинг S3 закрыт, а новые имена медиа не строятся на Telegram ID.
- Опубликованное публичное фото остается сохраняемым, потому что иначе его невозможно показать.
Точная формула проста: публичность контента - продуктовая модель, API - транспорт, скрейпинг - риск масштаба, а уязвимость - доказанный обход конкретной границы. Смешивать эти понятия удобно для сенсации, но бесполезно для безопасности.
Официальный ответ Mimolet с техническими статусамиПервый подробный разбор маршрутов, S3, сессий, бизнеса и Exim Публичный дейтинг не равен утечке данныхВторой, более прямой разбор логических подмен в публикацииМимолет, Мимолет Бот, Mimolet Bot, mimoletbot и @mimoletbot - названия одного продукта, оператором которого является ООО "Дейтинг".
Источники и связанные материалы
- Публикация на Хабре от 4 мая 2026 года
- Второй пост на Хабре от 27 июня 2026 года
- Официальная карточка Ubuntu по CVE-2026-45185
- Официальный ответ Mimolet на публикации
- Логический разбор тезисов о публичном дейтинге
Статья отражает проверенное состояние продукта и доступные источники на 17 июля 2026 года.