Закрытие отключить подстановку URL с помощью autoescape=strict

Я рендеринг соевого шаблона с использованием Closure для расширения Chrome и возникают проблемы с вставкой chrome-extension://* ссылки, так как они фильтруются soy.$$filterNormalizeUri

Хотя обычно было бы нежелательно разрешать chrome-extension://* ссылки, это имеет смысл в расширении Chrome.

Есть ли способ внести в белый список протокол или разрешить конкретный случай замены нефильтрованного URL (возможно, с использованием soy.$$normalizeUri вместо soy.$$filterNormalizeUri)? Ввод не определяется пользователем и должен быть безопасным для потребления.

Пример:

{template .t}
  {foreach $src in $list}
    <link rel="stylesheet" href="{$src}" />
  {/foreach}
{/template}

куда $list это сгенерированный список путей таблицы стилей, начинающийся с chrome-extension://*

Возвращенная ошибка Uncaught AssertionError: Failure: Bad valueхром-расширение://...for |filterNormalizeUri

Информация о побеге: https://developers.google.com/closure/templates/docs/security

1 ответ

Если элементы $list являются экземплярами SanitizedContent, а не строками, то я думаю, что их не следует экранировать.