FastComments.com

Синтаксис комментариев


Здесь мы рассмотрим формат комментариев FastComments, функции, поддерживаемые при написании комментариев, как форматировать текст и различные фильтры и меры безопасности, встроенные в систему.


Базовое форматирование Internal Link

FastComments использует комбинацию Markdown и простого подмножества HTML для написания комментариев.

Хороший ресурс по синтаксису Markdown здесь.

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

Некоторые примеры синтаксиса:

  • Жирный:
    • **жирный**
    • <b>жирный текст</b>
  • Курсив:
    • *курсив*
    • <i>курсивный текст</i>
  • Зачёркнутый:
    • ~~зачёркнутый~~
    • <strike>зачёркнутый</strike>
  • Цитаты:
    • > цитата

Обратите внимание, что заголовки Markdown не поддерживаются.

Ссылки могут быть написаны как их сырой URL, без HTML или другого синтаксиса, и по умолчанию ссылка будет преобразована в кликабельную ссылку с target="nofollow noopener" для отпугивания спамеров. Некоторые сайты могут отключить автоматическое создание ссылок.

Нумерованные списки можно написать так:

1. Первый пункт.
2. Второй пункт.
3. Третий пункт.

То же самое для маркированных списков:

- Один пункт.
- Другой пункт.

Для сообществ, ориентированных на программирование, код можно поделиться, вставив его в область комментария, и язык будет автоматически определён и отформатирован. Код можно добавить в теги <code></code> или блоки кода Markdown с обратными кавычками.

Безопасность Internal Link

Существует несколько аспектов безопасности при разрешении пользователям добавлять контент на веб‑сайт
и затем отображать этот контент на самых разных типах устройств.

Предотвращение злоупотребления форматированием

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

FastComments делает ряд действий, чтобы предотвратить злоупотребления, связанные с форматированием:

  • Большие повторяющиеся последовательные переносы строк сворачиваются.
  • Мы не отображаем заголовки (они становятся обычным текстом).
  • Мы не разрешаем CSS или пользовательские цвета.

Предотвращение эксплойтов

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

  • Мы разрешаем только явно определённый набор HTML‑тегов.
  • Мы разрешаем только явно определённый набор атрибутов HTML‑тегов.
  • Мы очищаем и санитизируем все вводимые данные.
    • Это делается с помощью библиотек DOMPurify и sanitizeHtml.
    • Мы выбрали эти библиотеки, так как хорошо протестированные (соответственно более 4 и 1 миллиона загрузок в неделю).

Это означает, что пользователи не могут делать такие вещи, как писать теги <script> или <style>, или пытаться добавить скрипты типа onload=alert() к изображениям или другому контенту.

Разрешённые HTML‑теги следующие:

  • <b>
  • <em>
  • <u>
  • <i>
  • <strike>
  • <pre>
  • <span>
  • <code>
  • <img>
  • <a>
  • <strong>
  • <ul>
  • <ol>
  • <li>
  • <br>

Тег <iframe> по умолчанию не разрешён. Если включить параметр Allow Media Embeds, iframe также разрешаются, но только когда их источник находится в встроенном списке доверенных провайдеров (например, YouTube, Vimeo, SoundCloud и Spotify) или в имени хоста, которое вы явно добавили. iframe из любого другого источника удаляются.