MORAL SQUAD
без лишних анкет, с понятными правилами

Как храним данные

Эта страница объясняет, какие данные хранит сайт для бессрочного и еженедельного голосований, публичного списка Twitch-кандидатов, сообщений разработчику, аккаунтов, игры «Битва за территории» и постов участников.

Актуально на 19 сентября 2026 года.

Битва за территории

Для участия используется аккаунт MORAL SQUAD. С ним сохраняются выбранная команда, дата вступления и время последнего хода для ограничения частоты действий. Карта, владельцы клеток и их здоровье видны всем; аккаунты игроков публично не показываются.

Каждый ход записывается: игрок, команда, клетка, действие, результат и время. Лента на странице игры называет ник игрока и его команду — «keritea за команду Костэк занял клетку 143». Ник виден всем, кто открыл страницу; если он не выбран, лента называет только команду. Номера участников публично не показываются — их видит только владелец, чтобы разбирать спорные случаи. При удалении аккаунта ходы остаются частью истории карты, но перестают указывать на человека.

Для счётчика онлайна временно хранится время активности аккаунта на странице игры. Игрок учитывается в течение минуты после последнего обновления; устаревшие отметки очищаются при следующем обновлении активности.

При удалении аккаунта его команда, время хода и отметка онлайна удаляются. Общее состояние карты сохраняется и не содержит идентификаторов игроков.

Чат игры

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

Комнат две категории: общая и по одной закрытой на каждую команду. Закрытая комната не показывается игрокам других команд, но её читают владелец сайта и модераторы чата. Это не личная переписка, и рассчитывать на тайну сообщений в ней нельзя. Личных сообщений на сайте нет.

Модератор может скрыть отдельное сообщение или все сообщения одного автора, закрыть ему возможность писать на 15 минут, на час или до снятия, а также выключить чат целиком или оставить его только для чтения. Скрытое сообщение исчезает из комнаты сразу, но остаётся видимым владельцу вместе с автором до конца срока хранения — чтобы спорное решение можно было разобрать. Список модераторов ведёт только владелец. Закрытие чата не влияет на участие в игре: замьюченный игрок продолжает ходить.

Сообщения хранятся 48 часов и затем удаляются автоматически. Стирание карты владельцем удаляет все сообщения чата сразу. При удалении аккаунта текст его сообщений остаётся, но перестаёт указывать на человека: ник с него снимается, и сообщение исчезает вместе с остальными не позднее чем через 48 часов.

Посты участников

Участник с ником может опубликовать свой текст. Текст, ник и выбранная аватарка видны всем, включая гостей и людей без аккаунта. Перед первой публикацией мы отдельно спрашиваем согласие на распространение ника и аватарки. Отказ не мешает читать сайт, играть и писать в чат.

Опубликованный пост хранится без срока, пока автор его не удалит или модератор не скроет. Удалённый автором пост сразу исчезает из ленты, но ещё 30 дней доступен владельцу и модераторам для разбора. Скрытый модератором пост также хранится 30 дней. Модератор может скрыть пост, убрать все посты автора и временно закрыть ему возможность писать.

При удалении аккаунта опубликованные посты удаляются. Уже скрытые модератором посты остаются без имени до истечения 30 дней. Отзыв отдельного согласия в профиле убирает посты тем же способом, не удаляя аккаунт.

Участник может отметить, что читает другого участника. Мы храним пару «кто читает — кого» и время подписки. Список тех, кого ты читаешь, виден только тебе; сколько человек читают тебя — только тебе. Участнику не сообщается, кто на него подписался. Отписка удаляет запись сразу, удаление аккаунта удаляет и подписки, и записи о том, что на этот аккаунт были подписаны.

Реакции на посты связаны с анонимным маркером посетителя, а не с аккаунтом. Кто именно поставил реакцию, никому не показывается. Жалобы принимаются только от аккаунтов с ником и хранятся для разбора модератором.

По вопросам текста, авторских прав и удаления можно оставить обращение через форму раздела. Контакты оператора указаны выше на этой странице.

Что сохраняется

  • технический HMAC-хеш подсети только для ограничения спама; записи лимитов удаляются не позднее чем через 8 дней.
  • подписки на авторов постов: пара аккаунтов и время подписки; запись удаляется при отписке и вместе с любым из двух аккаунтов;
  • выбранный участник, время создания и изменения голоса, а также случайный анонимный идентификатор голосующего в виде необратимого хеша;
  • отдельный выбранный участник и начало недели для голосования «Стример недели»;
  • Twitch-логин и каноническая публичная ссылка предложенного кандидата, дата добавления и анонимный идентификатор добавившего браузера;
  • выбранный Twitch-кандидат и даты создания и изменения этого голоса;
  • реакции под сообщениями разработчика, их вид и даты создания или изменения, связанные с тем же анонимным идентификатором голосующего;
  • текст сообщения разработчику и дата отправки; если посетитель сам написал в тексте Telegram, ссылку или другие контакты, они сохраняются как часть этого сообщения;
  • отдельные HMAC-хеши защищённой cookie и резервного браузерного маркера; сам резервный маркер хранится в localStorage;
  • технический HMAC-хеш сочетания IP-адреса, User-Agent и языка браузера для ограничения повторной выдачи идентификаторов; он хранится только в таблице лимитов не позднее 8 дней.

Что не сохраняется

Голосования и форма предложений Twitch-кандидатов не просят имя, почту, телефон или аккаунт Twitch посетителя. В свободном сообщении разработчику посетитель может добровольно оставить контакт прямо в тексте. База не сохраняет сырой IP-адрес: он преобразуется в необратимый технический HMAC-хеш для антиспама. Для маршрутов этой функции access-лог nginx отключён, а backend не записывает IP в свои логи. Общий веб-сервер может обрабатывать IP при загрузке других страниц по своей эксплуатационной политике. Cookie голосования содержит только случайный подписанный идентификатор, недоступна JavaScript и хранится до 400 дней. Резервный маркер голосования доступен только этому сайту и остаётся в localStorage, пока посетитель не очистит данные сайта.

Зачем это нужно

Сообщения разработчику нужны, чтобы собирать идеи, замечания и предложения помощи. Ответить можно только тогда, когда посетитель сам оставил способ связи в тексте.

Отдельный идентификатор голосования позволяет держать по одному активному выбору на браузер в бессрочном, еженедельном и кандидатском голосованиях, а также не более одной реакции под каждым сообщением разработчика. Другую реакцию можно выбрать вместо прежней, повторное нажатие на выбранную снимает её. Хеш сети и технических признаков браузера усложняет повторное голосование после удаления cookie и localStorage, но без входа в аккаунт полностью исключить обход невозможно.

Чтобы две вкладки одного браузера не выдали два идентификатора одновременно, браузер использует встроенную межвкладочную блокировку. В старых браузерах вместо неё в IndexedDB временно хранятся случайный токен блокировки и время его истечения. Эта запись не отправляется на сервер, удаляется после завершения запроса, а при сбое перестаёт действовать через 60 секунд.

Голосование и срок хранения

Голоса, реакции, хеши их анонимных идентификаторов и даты изменений хранятся, пока работают соответствующие функции. Еженедельный голос относится только к неделе, начавшейся в понедельник по времени Алматы; новая неделя начинается с пустого рейтинга. Точный IP-адрес, имя, почта и аккаунты соцсетей к голосу или реакции не привязываются. Если cookie утрачена, сайт пробует восстановить те же выборы и реакцию по резервному маркеру localStorage.

После удаления и cookie, и localStorage сервер больше не может надёжно связать браузер с прежним голосом. При этом технический лимит может до семи дней не разрешать создать новый идентификатор с того же сочетания сети и браузера. Выбранного участника можно поменять на главной странице: прежний голос будет снят автоматически.

Twitch-кандидаты

Форма принимает только прямую HTTPS-ссылку на Twitch-канал без описания, комментария или загружаемых файлов. Ссылка приводится к виду https://www.twitch.tv/название_канала, одинаковые каналы не дублируются и сразу становятся публичными в списке кандидатов. Добавление и победа в голосовании сами по себе никого не включают в MORAL SQUAD.

Сайт не запрашивает у Twitch профиль посетителя и не использует Twitch OAuth. Публичная ссылка кандидата и связанные с ней голоса хранятся, пока работает этот список. Автор добавления публично не показывается.

Сообщения разработчику

Форма принимает один свободный текст без отдельной анкеты и загрузки файлов. Сообщение сохраняется на сервере сайта. Сообщение и дата отправки доступны только в закрытом кабинете и не публикуются на сайте. Пересылка сообщений в Telegram отключена. Сырой IP-адрес к сообщению не сохраняется; технический HMAC-хеш подсети используется только в краткосрочном лимите от спама.

Сообщения хранятся, пока работает эта функция. Сообщение не связано с идентификатором браузера. Чтобы попросить удалить конкретное сообщение, можно написать на kserhite@yandex.ru и привести его текст и примерное время отправки.

Ранее отправленные предложения видео

Функция предложений видео закрыта 6 сентября 2026 года. Новые ссылки не принимаются, запросы к YouTube Data API прекращены. Ранее отправленные предложения остаются в закрытом архиве на сервере. По вопросам удаления этих записей можно написать на kserhite@yandex.ru.