🔧 Технический разбор

Как устроена Nexora

Без маркетинга и общих слов: настоящий стек, настоящие решения и настоящие ограничения. Здесь написано, что именно происходит с вашими данными и почему сделано именно так.

Безопасность Честно об ограничениях
31 400строк PHP
14 100строк JavaScript
80таблиц в базе
295маршрутов
37контроллеров
0рекламных трекеров

Четыре принципа

Всё остальное на этой странице — следствие вот этих решений.

🇷🇺

Данные остаются в России

Серверы физически в РФ. Это не только 152-ФЗ — это ещё и отказ от удобных зарубежных облаков, которые могли бы отключить нас в любой момент.

🚫

Ноль рекламной слежки

Нет Google Analytics, нет пикселей, нет сторонних SDK. Мы не строим ваш рекламный профиль, потому что не продаём рекламу — Nexora живёт на подписке.

🪶

Никаких лишних слоёв

PHP без фреймворка, JavaScript без сборки. Меньше зависимостей — меньше чужого кода, который может сломаться или утечь вместе с вашими данными.

🔍

Говорим и о минусах

Ниже есть раздел «Честно об ограничениях». Проект молодой, и делать вид, что у него нет слабых мест, — самый быстрый способ потерять доверие.

Стек и почему именно он

Бэкенд: PHP 8 без фреймворка

Ни Laravel, ни Symfony. Свой маршрутизатор на ~200 строк, контроллеры, вьюшки — и всё. Это осознанный выбор, а не незнание фреймворков: у Nexora один разработчик, и цена обновления мажорной версии фреймворка со всеми его зависимостями здесь выше, чем польза. Каждая строка на сервере написана под задачу и понятна целиком.

База: MySQL, только подготовленные выражения

Все запросы идут через единый слой DB с подготовленными выражениями и отключённой эмуляцией. SQL-инъекция через пользовательский ввод невозможна архитектурно, а не «потому что мы аккуратные».

Фронтенд: чистые CSS и JavaScript

Нет React, нет Vue, нет сборщика. Страница отдаётся сервером готовой и работает сразу — без ожидания, пока браузер скачает и выполнит мегабайт JavaScript. Тема, анимации и вся интерактивность — на нативных возможностях браузера.

Приложение: PWA

Nexora ставится на телефон как обычное приложение — свой Service Worker и манифест. Без магазинов приложений и их правил.

Что происходит, когда вы открываете страницу

Полный путь одного запроса — от адресной строки до ответа.

1
HTTPS и заголовки безопасности
Соединение только по HTTPS (HSTS: браузер сам отказывается ходить по HTTP). Сразу выставляются CSP, X-Frame-Options, Referrer-Policy — защита от встраивания в чужие страницы и от подмены скриптов.
2
Единая точка входа
Любой адрес попадает в index.php. Прямого доступа к исходникам, конфигам и загруженным файлам нет — служебные папки закрыты на уровне веб-сервера.
3
Маршрутизация и проверка доступа
Свой роутер находит нужный контроллер среди 295 маршрутов. Для защищённых страниц тут же проверяется сессия, бан, а для изменяющих действий — CSRF-токен.
4
Контроллер и данные
Контроллер обращается к базе подготовленными запросами. Личные сообщения на этом шаге расшифровываются — в базе они лежат зашифрованными.
5
Ответ
Готовая страница уходит браузеру. Если по пути случилась ошибка — она мгновенно улетает разработчику в Telegram, поэтому большинство сбоев починены раньше, чем на них успевают пожаловаться.

Безопасность: что конкретно сделано

Не «мы заботимся о вашей безопасности», а перечень механизмов, которые работают в коде прямо сейчас.

Пароли

Хранятся как хеш bcrypt (password_hash). В базе нет ни одного пароля в читаемом виде — даже владелец проекта не может узнать ваш пароль, только сбросить.

Двухфакторная аутентификация

Свой TOTP по RFC 6238 — те же одноразовые коды, что в Google Authenticator и Authy. Реализован на чистом PHP, без внешних сервисов: код проверяется на нашем сервере и никуда не отправляется. Доверенные устройства запоминаются, чтобы не вводить код каждый раз.

Личные сообщения зашифрованы в базе

Текст переписки шифруется алгоритмом XSalsa20-Poly1305 (libsodium, crypto_secretbox) — с проверкой целостности, то есть подменить сообщение незаметно нельзя. Если кто-то получит доступ к дампу базы, он увидит нечитаемый набор байтов вместо переписки.

Важная честность: это шифрование при хранении, а не сквозное (end-to-end). Ключ находится на сервере, поэтому технически сервер способен расшифровать сообщение — иначе не работали бы поиск по переписке, модерация жалоб и уведомления. Мы не называем это E2E, потому что это не E2E. Если вам нужна переписка, недоступная даже владельцу сервиса — пользуйтесь мессенджерами со сквозным шифрованием, это правильный выбор.

Защита от подделки запросов и перебора

Каждое изменяющее действие требует CSRF-токена — чужой сайт не сможет выполнить действие от вашего имени. Вход, регистрация и восстановление пароля ограничены по частоте (rate limiting), поэтому перебор паролей упирается в блокировку, а не в терпение.

Загрузки

Файлы проверяются по типу и размеру, лежат вне исполняемых путей и не могут быть запущены как код. Дампы базы, логи и резервные копии закрыты от скачивания на уровне веб-сервера.

Приватность: чего мы не делаем

Проще перечислить то, чего в Nexora нет — этот список важнее любых обещаний.

Нет рекламных трекеров. Ни одного пикселя, ни одной аналитики третьих сторон. Открывайте инструменты разработчика и проверьте сетевые запросы — сторонних доменов там нет.
Не продаём и не передаём данные. Никаким рекламодателям, никаким «партнёрам по маркетингу».
Не строим поведенческий профиль. Лента формируется из ваших подписок, а не из слежки за тем, где вы задержали палец.
Нет тёмных шаблонов. Отписка, удаление аккаунта и выгрузка данных доступны в один-два клика, а не спрятаны в поддержке.
Есть выгрузка ваших данных. В настройках можно скачать свой архив — посты, сообщения, профиль.
Есть удаление аккаунта. Вместе с ним каскадно удаляются посты, сообщения, реакции и подписки.

Как работает «в реальном времени» без WebSocket

Обычно живые чаты делают на WebSocket — постоянном соединении. Наш хостинг не позволяет держать долгоживущий процесс, поэтому мессенджер устроен иначе: браузер сам спрашивает сервер о новых сообщениях. Но не с фиксированной частотой, а подстраиваясь под происходящее:

активная переписка → опрос каждые 1,2 сек затихло на 20 сек → каждые 3 сек простой 2 минуты → каждые 8 сек вкладка в фоне → опрос останавливается

Результат: в живом диалоге сообщения приходят почти мгновенно, а простаивающие вкладки дёргают сервер втрое реже, чем при обычном интервале. Тот же приём применён к индикатору «печатает…» — он не спамит сервер на каждую нажатую клавишу.

Ещё один пример решения под ограничения: у нас нет планировщика задач (cron). Поэтому отложенные публикации, поздравления с днём рождения и очистка устаревших данных происходят «попутно» — их досчитывает первый же запрос, который зашёл после нужного момента. Снаружи выглядит как работающий планировщик, внутри — ни одного лишнего процесса.

Модерация: наказание всегда с причиной

Аудитория Nexora — с 14 лет, поэтому модерация здесь не формальность.

📋

Каждое решение задокументировано

Бан или мут нельзя выдать «молча»: система требует причину и описание нарушения. Без них действие просто не выполнится.

⚖️

Апелляции

Заблокированный видит причину и может оспорить решение — с перепиской, а не в пустоту.

👥

Разделение прав

Модератор, техадмин и владелец — разные роли с разными возможностями. Выдавать роли может только владелец.

🔤

Фильтры и жалобы

Список запрещённых слов, жалобы на посты и профили, история наказаний по каждому пользователю.

Это не только сайт

Вокруг Nexora выросло несколько отдельных продуктов — и все они входят по одному аккаунту NEXORA.

🎬

NEXORA Studio

Настольный редактор 3D-сцен для macOS. Написан на Swift, собирает игру и публикует её прямо на сайт — она открывается в браузере без установки.

🎥

NEXORA Meet

Видеозвонки на отдельном домене. Видео идёт напрямую между участниками (P2P), через наш сервер проходит только служебная информация о соединении.

🎮

Лаунчер Minecraft

Настольный лаунчер — только с лицензионным входом, пиратских сборок у нас нет.

✍️

Статьи и донаты

Полноценный редактор статей с черновиками, кабинет автора со статистикой и поддержка авторов внутренней валютой.

Nexora как платформа

У Nexora есть собственный сервер авторизации OAuth 2.0 — тот же механизм, по которому вы входите куда-то «через Google». Любое приложение может добавить кнопку «Войти через NEXORA»: пользователь видит экран согласия, сам решает, какие данные отдать, и в любой момент отзывает доступ в настройках.

Именно так работают наши же продукты: Studio публикует игры, а Meet пускает в видеозвонки — оба через этот OAuth, без отдельных паролей. Приложения регистрируются в кабинете разработчика, а данные отдаёт REST API.

Документация API Кабинет разработчика

Честно об ограничениях

Раздел, которого обычно не бывает на таких страницах. Мы считаем, что он важнее всех остальных: если вы знаете слабые места, вы можете принять решение осознанно.

!
Проект небольшой. Nexora развивает один разработчик. Это значит быстрые решения и живую поддержку — но и то, что у нас нет круглосуточной дежурной смены.
!
Шифрование сообщений не сквозное. Ключ на сервере (подробно объяснили выше). Для переписки, которую не должен видеть даже владелец сервиса, наш мессенджер — не тот инструмент.
!
Независимого аудита безопасности не было. Он стоит денег, которых у проекта пока нет. Мы говорим об этом прямо, а не молчим.
!
Видеозвонки — для небольших групп. Видео идёт напрямую между участниками, поэтому комната ограничена шестью людьми: каждому пришлось бы отправлять поток всем остальным.
!
Обновления выкладываются вручную. Без автоматических конвейеров развёртывания. Медленнее, зато ни одна правка не уезжает на сайт случайно.

Частые вопросы о самом проекте

Почему исходный код закрыт и его нет на GitHub?
По той же причине, по которой закрыты серверы ВКонтакте, Discord, Instagram и Telegram: в коде сервера живёт логика защиты, антиспама и модерации. Опубликовать её — значит выдать подробную карту слабых мест тем, кто ищет способ навредить пользователям. При этом клиентские части экосистемы мы открывать готовы, а свой API и OAuth уже открыты для сторонних разработчиков. Кстати, у Telegram открыты только клиенты — сервер закрыт, и это нормальная практика.
Используется ли искусственный интеллект при разработке?
Да, как и почти во всей современной индустрии — ИИ помогает писать код, так же как подсветка синтаксиса или автодополнение. Но архитектуру, продуктовые решения и то, что попадёт в продакшн, определяет человек. Отдельно скажем прямо: на Nexora нет ИИ, который читал бы вашу переписку или подсовывал вам ленту. Тексты и посты пишут люди.
Как проверить то, что здесь написано, без исходного кода?
Многое проверяется снаружи. Откройте инструменты разработчика (F12) → «Сеть» и убедитесь, что запросов к сторонним аналитикам нет. Проверьте заголовки безопасности и сертификат. Посмотрите, как работают выгрузка данных и удаление аккаунта. А если найдёте уязвимость — напишите нам: мы отвечаем на такие письма первыми и благодарим за них.
Что будет с моими данными, если проект закроется?
Поэтому выгрузка архива есть уже сейчас, а не «когда-нибудь потом» — забрать свои данные можно в любой момент, не спрашивая разрешения. О закрытии, если оно когда-нибудь случится, мы предупредим заранее и оставим время на выгрузку.
Почему не использовать готовый фреймворк — было бы надёжнее?
У фреймворка есть плюсы, но есть и цена: десятки чужих зависимостей, каждая из которых может содержать уязвимость, и обязанность следить за обновлениями всей этой цепочки. Для проекта с одним разработчиком меньший объём чужого кода — это меньше рисков, а не больше. Ключевые механизмы (шифрование, TOTP) при этом взяты не «своей криптографией», а из проверенных стандартов и библиотек.

Остались вопросы?

Спрашивайте что угодно о технической стороне — отвечаем без «это коммерческая тайна» там, где это не касается безопасности пользователей.