В глобальном уведомлении не должно быть HTML

Эта тема была решена командой Discourse. Я оставляю оригинальную тему открытой для архивных целей, но проблема была решена @Roman и командой.


Недавно я восстановил Discourse, чтобы обновить настройки SMTP, и теперь HTML-теги моего глобального уведомления отображаются как текст.

Вот как это выглядит с тегами:

Добро пожаловать на новые форумы Real Racin' USA Motor Sports!


Ваши молитвы и пожелания услышаны.

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

Пожалуйста, прочитайте наш пост "Я хочу вернуть свой аккаунт!" с инструкциями о том, как снова получить доступ к своему аккаунту.

Теперь, когда пыль почти улеглась, мы всё ещё проверяем этот форум, чтобы убедиться, что он работает корректно для всех.

Для всех обновлений форума и получения помощи посетите страницу Sunshine State Racing в Facebook.

Но после восстановления я вижу это:

В одном из последних коммитов были внесены изменения в глобальные уведомления, отключающие эту функцию.

Так, есть ли сейчас способ включать ссылки в глобальные уведомления?

Мой альтернативный вариант заключался в том, чтобы создать пост и закрепить его как баннерную тему.

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

Как упоминалось выше, обходным решением будет использование темы с баннером.

Жаль, это было действительно полезно.

Спасибо за разъяснение.

Хм, просто моё личное мнение, но у этих двух функций совершенно разные цели.

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

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

Если у кого-то есть права на установку глобального уведомления, значит, он также имеет право создавать компонент темы? То есть здесь нет дополнительных векторов атаки?

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

Позвольте мне изложить аргументы в пользу разрешения HTML. Я работаю с клиентом, который запускает форум для инвесторов (закрытое бета-тестирование началось вчера, как раз так вышло). Их юридический отдел настаивает на наличии отказа от ответственности. Он должен:

  • Быть заметно размещен на каждой странице форума.
  • Не иметь возможности быть закрытым.

Иными словами, это глобальное уведомление.[1]

В качестве примера (не того сайта, над которым я работаю, но в той же нише) посмотрите на отказ от ответственности на Freetrade. Важно отметить, что юридическому отделу не важно, содержит ли уведомление HTML. Их интересует только то, чтобы оно было на месте и пользователи не могли утверждать, что не видели его.

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

Между тем, если бы мы использовали это по назначению («СРОЧНО, АВАРИЙНОЕ, неотключаемое глобальное баннерное уведомление для всех посетителей»), разве не было бы удобно иметь возможность ссылаться на страницу статуса или другое место для получения дополнительной информации?

Однако это действительно не «любой другой ввод пользователя», верно? Это настройка сайта, которую могут изменить лишь горстка людей. С точки зрения владельцев сайта это не ввод пользователя, а часть интерфейса, предоставляемого пользователям.[2]

Есть ли где-то объяснение причин? Если вы работаете над другим инструментом для поддержки неотключаемых глобальных баннеров, позволяющих ссылки,[3] было бы полезно знать, когда он будет готов. Я бы предпочел избежать необходимости настраивать кастомизацию, если это возможно.

Извините, если я звучу немного ворчливо. Мы не знали, что такое изменение грядет, и это ставит нас в неловкое положение. Сообщество должно было быть открыто для более широкой аудитории на следующей неделе, а это изменение вносит свои коррективы.



  1. Я вижу аргумент, что это неправильное использование функции. Но если бы мы создавали эту функцию сами, она работала бы точно так же, как глобальное уведомление. :man_shrugging: ↩︎

  2. Я понимаю, что с точки зрения Discourse администраторы — это пользователи. Просто в данном случае это кажется неправильным подходом. ↩︎

  3. А также стилизация, но это вторично. ↩︎

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

Эмодзи на форуме преобразовывались в формат &#, и при цитировании вызывали ошибки «Недопустимая последовательность байтов в utf-8» при конвертации, в результате чего на форуме эмодзи отображались как символы �.

Я подумал, что нечто подобное может произойти и с HTML-тегами в будущем обновлении, что вызовет проблемы с базой данных и сделает все сообщества неработоспособными.

Человек, лучше знающий код, вероятно, мог бы заверить, что этого, скорее всего, не произойдёт благодаря множественным проверкам, которые проходит каждое исправление перед попаданием в основную ветку для загрузки/обновления. Команда Discourse стремится сделать систему самодостаточным, безпроблемным решением в один клик для всех, кто хочет создать сообщество онлайн, и у них это хорошо получается!

Тем не менее, моё простое решение пока достаточно, пока не будет опубликовано новое. К тому же приятно иметь меньше визуального шума на экране, поскольку можно скрывать темы-баннеры.

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

Он гораздо более мощный и настраиваемый, чем глобальное уведомление.

Мы вновь включили поддержку HTML в настройке глобального уведомления. Мы хотим найти лучший способ обеспечить плавный переход.

В описании под полем глобального уведомления вы можете указать:

«Поддержка HTML будет удалена в одной из будущих версий»

Кроме того, когда она была отключена, в описании всё ещё говорилось «HTML разрешён».

@Roman_Rizzi Когда выйдет релиз с глобальным уведомлением?

Мы обсудили это и решили сохранить поддержку HTML для настройки глобального уведомления, поэтому она не будет удалена в ближайшее время.

Чего же мне тогда не хватает? Почему это не работает на нашем форуме?

Обновите свой Discourse. Он был повторно включен несколько дней назад, поэтому выполните обновление, и проблема должна быть решена.

Спасибо за супербыстрый ответ! Только что обновился, но всё ещё не работает (показывается HTML).