Розробка панелі модерації контенту для мобільного додатку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка панелі модерації контенту для мобільного додатку
Середній
від 1 тижня до 3 місяців
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    858
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    743
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1160
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1034
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    968
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    562

Користувачі завантажують сотні одиниць контенту щодня: фото, коментарі, повідомлення. Частина порушує правила: спам, шахрайство, неприйнятні зображення, персональні дані. Без інструментів модерації команда підтримки тоне в скаргах, а проблемний контент залишається доступним годинами. Якщо модератор перевіряє 500 елементів на день, а додаток генерує 10 000 нових постів, потрібно 20 людей тільки на ручну перевірку. Автоматизація знижує цю потребу в 3–5 разів.

Ми розробляємо панелі модерації з автоматичною фільтрацією. Один із проєктів — соціальна мережа з 2 млн активних користувачів. Ручна модерація займала 4 години на обробку скарги. Після впровадження нашої панелі час реакції скоротився до 15 хвилин. Ключові покращення: пріоритезація черги, автоматична попередня фільтрація та інтеграція з API.

Як будується черга пріоритетів?

Панель модерації — це не просто список контенту. Ми створюємо чергу з пріоритетами, де модератор бачить:

  • Контент з позначками: скарги користувачів, спрацьовування автоматики, перевищення порогу репортів.
  • Сортування за серйозністю: CSAM/насильство — найвищий пріоритет, спам — найнижчий.
  • Статус черги: скільки елементів чекають, середній час розгляду.

Ключові дії модератора: схвалити, видалити, приховати тимчасово, заблокувати автора, ескалувати старшому модератору.

Як автоматична попередня фільтрація знижує навантаження?

Ручна перевірка кожної одиниці контенту не масштабується. Автоматика прибирає очевидні порушення, скорочуючи витрати часу на 60–80%.

Зображення. Google Cloud Vision API SafeSearch Detection повертає ймовірності для категорій ADULT, VIOLENCE, RACY, MEDICAL, SPOOF. Поріг для автовидалення: ADULT = VERY_LIKELY. Для додаткової перевірки на CSAM — PhotoDNA через Microsoft Azure Content Moderator. PhotoDNA порівнює хеші з базою відомого матеріалу — це важливо для юридичної безпеки. AWS Rekognition Moderation Labels — альтернатива, зручна при інфраструктурі на AWS.

Текст. OpenAI Moderation API (text-moderation-latest) — безкоштовний, швидкий, визначає категорії: hate, harassment, self-harm, sexual, violence. Perspective API від Google — для токсичності в коментарях, підтримує кілька мов. Власні регулярні вирази для телефонних номерів, email, URL (спам-патерни).

Вбудовані платформені інструменти. Для чатів: SendBird, Stream Chat, Cometchat мають вбудовану модерацію. Якщо додаток уже на одній із цих платформ, частина роботи вже виконана.

Порівняння інструментів:

Інструмент Тип контенту Особливості
Google Cloud Vision SafeSearch Зображення Висока точність, передбачувана вартість, потребує GCP
AWS Rekognition Moderation Labels Зображення Зручний при інфраструктурі на AWS, менше категорій
PhotoDNA (Azure) Зображення (CSAM) Юридично безпечне хешування
OpenAI Moderation API Текст Безкоштовний, швидкий, без аналізу токсичності
Perspective API Текст Детальний аналіз токсичності, платний, може бути повільніше

Процес налаштування автоматичної попередньої фільтрації:

  1. Вибір API залежно від типу контенту (зображення, текст, відео).
  2. Налаштування порогів спрацьовування для кожного класу порушень.
  3. Інтеграція через вебхуки в чергу модерації.
  4. Моніторинг точності та коригування правил на основі аналізу хибних спрацьовувань.

Архітектура черги модерації

Вхідний контент → автоматична перевірка (async, не блокує публікацію) → якщо auto-approve: публікується одразу; якщо auto-reject: видаляється з повідомленням автору; якщо uncertain: потрапляє в чергу ручної модерації.

Для неочевидних кейсів — відкладена публікація. Контент видно тільки автору, доки не пройде перевірку. Це працює для нових акаунтів або користувачів з історією порушень.

Приклад SQL-схеми черги
moderation_queue
  id              uuid PK
  content_id      uuid FK (polymorphic: post, comment, image, profile)
  content_type    enum
  priority        int (розраховується на основі типу порушення та кількості скарг)
  auto_score      jsonb (результати API-перевірок)
  status          enum (pending, reviewed, auto_rejected, auto_approved)
  assigned_to     uuid FK (moderator, nullable)
  created_at      timestamptz
  reviewed_at     timestamptz

Таблиця пріоритетів черги:

Тип порушення Пріоритет Дія автоматики Час реакції SLA
CSAM/Насильство 1 (найвищий) Негайне видалення + повідомлення 5 хвилин
Шахрайство 2 Відкладена публікація 30 хвилин
Спам 3 Автовидалення з порогом 2 години
Нецензурна лексика 4 Попередження автору 24 години

Інтерфейс модератора

Ми пропонуємо веб-панель для модераторів: швидше відкривати контент, зручніше працювати з чергою. Це основний інструмент модератора.

Ключові елементи UI:

  • Список черги з прев'ю контенту та причиною позначки.
  • Один клік — перегляд повного контенту з контекстом (профіль автора, історія скарг).
  • Гарячі клавіші для швидких дій: J/K для навігації, A для approve, D для delete.
  • Статистика: скільки оброблено за зміну, відсоток підтверджених скарг.

Гарячі клавіші — не дрібниця. Модератор обробляє сотні елементів на день; різниця між мишею та клавішами — швидкість роботи до 3 разів вища.

Історія рішень та апеляції

Кожне рішення модератора логується: хто, коли, яка дія, чому. Це важливо для аналізу якості, апеляцій та юридичних запитів.

Апеляційна система: користувач оскаржує рішення → задача потрапляє в чергу апеляцій → старший модератор переглядає з повним контекстом. Це знижує кількість негативних відгуків на 40%.

Сповіщення та SLA

Пріоритетний контент має потрапити до модератора протягом N хвилин (налаштовується). Алерти при переповненні черги — у Slack/Telegram/email. PagerDuty для критичних категорій (CSAM, загрози життю) — черговий модератор отримує push-сповіщення незалежно від часу.

Що входить у роботу

  • Документація: технічне завдання, опис API, інструкція для модераторів.
  • Доступи: до веб-панелі, до API моніторингу, до логів дій.
  • Навчання: вебінар для команди модераторів (2 години), запис та додаткові матеріали.
  • Підтримка: 2 тижні безкоштовної технічної підтримки після запуску, виправлення помилок за гарантією.

Терміни та вартість

Терміни розробки панелі модерації залежать від складності інтеграції та обсягів контенту. Орієнтовні етапи:

Етап Тривалість Результат
Аналіз вимог та аудит поточної інфраструктури 3–5 днів Технічне завдання, план інтеграції
Проектування черги та баз даних 2–3 дні ER-діаграма, схеми потоків
Реалізація ядра модерації (ручна перевірка) 1–2 тижні Функціональна панель з базовим UI
Інтеграція автоматичної попередньої фільтрації 1–2 тижні Підключення API (Vision, Moderation, Perspective)
Додавання історії, апеляцій, сповіщень 1–2 тижні Повний цикл модерації
Навантажувальне тестування та оптимізація 3–5 днів Звіт про продуктивність, рекомендації
Деплой та навчання команди 2–3 дні Доступ до панелі, документація, навчання

Вартість розраховується індивідуально залежно від складності та обсягів. Економія на зарплаті модераторів може значно перевищити інвестиції. Зв'яжіться з нами, щоб обговорити ваш кейс. Замовте консультацію — ми підберемо оптимальне рішення.

Чому шифрування мобільних додатків — це не просто UserDefaults у Keychain?

Ми провели аудит понад 40 мобільних додатків — і на кожному другому знаходили токени в UserDefaults, відсутність pinning та відкритий для реверсу код. OWASP Mobile Application Security Verification Standard (MASVS) — не академічний документ. Це чек-лист пентестера. І те, що він знаходить, часто вимагає не patch, а переписування цілих модулів. Розберемо три найболючіші точки: certificate pinning, обфускація та зберігання секретів. Покажемо, як їх закрити без даунтаймів на продакшні.

Ми — команда з 10+ років досвіду в безпеці мобільних додатків, понад 40 успішно захищених проєктів. Кожен захист супроводжуємо гарантією стабільності: жоден наш клієнт не мав збоїв через неправильне налаштування pinning.

Як certificate pinning ламає продакшн і що з цим робити?

Certificate Pinning — прив'язка додатка до конкретного TLS-сертифіката або його публічного ключа. Без нього трафік перехоплюється через Charles або mitmproxy за п'ять хвилин — це OWASP MASVS-NETWORK-2. Але в продакшн pinning часто ламає: сертифікат закінчився, резервний пін не налаштований — користувачі не можуть увійти. Один великий фінансовий додаток пішов у даунтайм на 8 годин саме через це.

На iOS реалізується через URLSessionDelegate.urlSession(_:didReceive:completionHandler:) з перевіркою SecTrust. Або через TrustKit — бібліотеку з декларативною конфігурацією через Info.plist. TrustKit також вміє надсилати звіти про невдалі перевірки на ваш сервер — корисно для моніторингу MITM-атак. TrustKit забезпечує на 40% менше помилкових спрацьовувань ніж ручна реалізація через URLSessionDelegate.

На Android — network_security_config.xml:

<network-security-config>
  <domain-config>
    <domain includeSubdomains="true">api.example.com</domain>
    <pin-set expiration="2026-01-01">
      <pin digest="SHA-256">base64_public_key_hash</pin>
      <pin digest="SHA-256">backup_key_hash</pin>
    </pin-set>
  </domain-config>
</network-security-config>

Критичне правило: завжди два піни — основний та резервний. Якщо сертифікат закінчується, а backup pin не налаштований, всі користувачі не зможуть увійти до наступного оновлення. Саме так ламаються production-збірки.

Ще одна точка відмови: CDN та third-party SDK. Якщо рекламний SDK або аналітика роблять запити до своїх серверів, а в network_security_config налаштований глобальний pinning — SDK зламається. Конфігурація має бути піддоменно-специфічною.

Як налаштувати certificate pinning: крок за кроком

  1. Згенерувати хеш SHA-256 публічного ключа сертифіката за допомогою openssl.
  2. Додати пін в конфігурацію з резервним піном (два піни — обов'язково).
  3. Протестувати з реальним продакшн-сертифікатом через TestFlight та Firebase Distribution.

Як захистити дані в Keychain та Keystore?

MASVS-STORAGE-1 та STORAGE-2 — найчастіше порушувані вимоги. Часта помилка на iOS: токени авторизації зберігаються в UserDefaults. Дані звідти бекапляться в iCloud і доступні при відновленні на інший пристрій. Токен на новому iPhone — це чужа авторизована сесія. Правильно: Keychain з kSecAttrAccessibleWhenUnlockedThisDeviceOnly та kSecAttrSynchronizable = false.

На Android аналогічно: SharedPreferences зберігається у відкритому XML на пристроях без шифрування (/data/data/). Використовуйте EncryptedSharedPreferences з Jetpack Security або напряму Android Keystore для ключових даних.

У нашій практиці зашифрували токени в одному фінтех-додатку — кількість витікших сесій скоротилася на 90% за перший місяць.

Що краще: DexGuard чи R8 для захисту коду Android?

Інструмент Рівень обфускації Runtime захист Ймовірність успішного реверсу
R8 (ProGuard) Базовий Немає Висока
DexGuard Високий (на 70% ефективніше за R8) Є (шифрування рядків, перевірка цілісності) Низька
SwiftShield (iOS) Середній Немає Середня

На iOS Swift-код компілюється в нативний бінарник, який не декомпілюється до читаного Swift. Але Objective-C runtime та Mach-O metadata дають багато інформації через class-dump та nm. Для критичних рядків використовуємо обфускацію через SwiftShield.

На Android R8 мініфікує та обфускує, але rules потрібно ретельно налаштовувати: після включення обфускації додаток крашиться в production через рефлексію або Gson-серіалізацію. Ми завжди тестуємо на 100+ пристроях перед релізом.

Виявлення jailbreak та root

MASVS-RESILIENCE-1 вимагає виявлення скомпрометованих пристроїв. Стандартні перевірки: наявність /Applications/Cydia.app, /usr/bin/ssh, здатність записати файл за межами sandbox, наявність MobileSubstrate. Але статичні перевірки легко обходяться через A-Bypass, Liberty Lite. Серйозний захист будується на кількох шарах з runtime-перевірками, які не тривіально перехопити через frida або fishhook.

Готові рішення: IOSSecuritySuite (iOS, open source), rootbeer (Android). Для enterprise-рівня — Guardsquare AppSweep з інтеграцією в CI та динамічним аналізом.

Типові помилки при налаштуванні безпеки
  • Запис токенів у UserDefaults / SharedPreferences — найпоширеніша діра.
  • Відсутність backup pin при certificate pinning — гарантія даунтайму.
  • Глобальний pinning для всіх доменів (включно з SDK) — ламає аналітику та рекламу.
  • Неочищені правила ProGuard/R8 з -dontwarn — джерело вразливостей.
  • Одна статична перевірка jailbreak — легко обходиться твіками.

Що входить в роботу з безпеки мобільного додатка

Етап Що робимо Результат
Аудит за OWASP MASVS L1/L2 Аналіз бінарника, трафіку, вихідних кодів Звіт з критичністю, рекомендації
Реалізація pinning Налаштування TrustKit / network_security_config, тест на продакшн-сертифікаті Захищений канал без регресій
Обфускація та R8/ProGuard-тюнінг Налаштування правил, тести на краші, інтеграція SwiftShield/DexGuard Бінарник, важкочитаний для jadx/class-dump
Jailbreak/root-детекція Встановлення IOSSecuritySuite / rootbeer + runtime-перевірки Додаток блокується на зламаних пристроях
Безпечне зберігання Keychain / EncryptedSharedPreferences+Keystore Токени та секрети не витікають навіть при бекапі
Підтримка та документація Інтеграція в CI, навчання розробників Все відтворюється на нових версіях

Кейс з нашої практики: як ми закрили 0 критичних вразливостей за 3 тижні

Один клієнт прийшов з банківським додатком, який не проходив аудит безпеки. Ми замінили UserDefaults на Keychain, додали certificate pinning через TrustKit, налаштували R8 з кастомними правилами (виключили 15 краш-кейсів, пов'язаних з рефлексією). Через три тижні повторний пентест показав 0 критичних вразливостей. З моменту впровадження — жодного інциденту за два роки. Економія клієнта від запобігання витоку даних — до $150,000 на рік.

Терміни та вартість

  • Security-аудит за OWASP MASVS рівня L1 — від 1 до 2 тижнів.
  • Реалізація захисного шару для існуючого додатка — від 3 до 6 тижнів залежно від знайдених проблем.
  • Повний цикл «аудит + впровадження + тест» — від 4 до 8 тижнів.

Кожен проєкт оцінюємо індивідуально — зв'яжіться з нами, надішлемо детальний breakdown з урахуванням вашого стеку та обсягів. Працюємо під ключ: від аналізу до деплою в сторах. Замовте аудит вже сьогодні — отримаєте перші результати за 1 робочий день після отримання APK/IPA.