Как делают меня ткань и санируют HTML?

Функции имеют область видимости для своего текущего блока, и они поднимаются к вершине их текущего блока, в этом операторе if есть два блока if

  if (!blah) {
    function foo() { console.log('falsy') }
  } else {
    function foo() { console.log('truthy') }
  }

Если вы отформатируете его таким образом, вы увидите два foos и их объем находится в скобках.

Точно так же, как привет ниже, терпит неудачу, поскольку он имеет только область видимости для блока, в котором он определен.

hello();
{
  function hello() {
    console.log('hello');
  }
}

5
задан Soviut 2 February 2009 в 04:29
поделиться

2 ответа

Для тех, кто сталкивается с той же проблемой: при использовании драгоценного камня RedCloth, можно просто определить собственный метод (в одном из помощников).

def safe_textilize( s )
  if s && s.respond_to?(:to_s)
    doc = RedCloth.new( s.to_s )
    doc.filter_html = true
    doc.to_html
  end
end

Выборка из документации:

Средства доступа для установки ограничений безопасности.

Это - хорошая вещь при использовании RedCloth для форматирования в общественных местах (например, Wikis), где Вы не хотите, чтобы пользователи злоупотребили HTML для плохих вещей.

Если filter_html установлен, HTML, который не был создан процессором Textile, оставят. С другой стороны, если sanitize_html установлен, HTML может пройти через процессор Textile, но несанкционированные теги и атрибуты будут удалены.

7
ответ дан 14 December 2019 в 01:19
поделиться

Похож на ткань, просто не поддерживает то, что Вы хотите.

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

То, в чем Вы нуждаетесь, является, вероятно, специальной "ограниченной" версией ткани, это только позволяет "безопасную" разметку (определяющий, который однако мог бы уже быть хитрым). Я не знаю, существует ли это, как бы то ни было.

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

0
ответ дан 14 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: