Запретить удаление <link><link>< / link> с помощью html_sanitize()

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

В качестве примера я получаю следующий HTML:

<div>
<link href="style.css" rel="stylesheet" type="text/css" />
<script> alert('Blah');</script>
<a class="btn-active"></a>
</div>

И html_sanitize (bodyHtml, urlX, idX); возвращает:

<div>
<a class="btn-active"></a>
</div>

В идеале, я хочу сохранить теги ссылок со всем остальным тем же самым. Вот так.

<div>
<link href="style.css" rel="stylesheet" type="text/css" />
<a class="btn-active"></a>
</div>

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

Есть ли способ сделать это?

1 ответ

  1. Согласно документации вы можете сделать что-то вроде :

    // Allow only a super restricted set of tags and attributes
    clean = sanitizeHtml(dirty, {
      allowedTags: [ 'link' ],
      allowedAttributes: {
        'link': [ 'href','rel','type' ]
      }
    });
    

    С dirty = document.documentElement.innerHTML;(для exemple).

    Вам, конечно, придется изменитьdirty, cleanчтобы закончить работу :

    document.documentElement.innerHTML = clean;