На странице разметки, как я могу добавить что-то к свойству textContent HTML-тега? - PullRequest
0 голосов
/ 16 ноября 2018

Я заметил, что XSS vuln работает над тем, чтобы определить, где jqxGrid будет отображать ячейку.Например: <a href="javascript:alert('test');">Hello</a>.Поэтому я подумал, как найти способ решить эту проблему.В настоящее время я перебираю данные для отображения, и есть функция визуализации и функция ячеек, которую вы можете передать.У меня вопрос: как мне вернуть строку HTML, чтобы в ячейке отображался текст, обозначенный в аргументе 6.

У меня есть свои собственные сценарии очистки и сценарии очистки, которые я могу применить, но я думал, что могу добавитьзначение свойства textContent элемента HTML.Можно ли это сделать?

Могу ли я сделать что-то вроде:

return "<div text-content='VALUE'></div>";

вместо:

return "<div>" + value + " </div>";

Существует ли версия JQXGrid для Angular6 +, которую мы могли бы использовать,какие преимущества получат политики угловых инъекций?

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

Предположение: сервер проверяет это, и клиент делает то же самое.Тем не менее, я знаю, что мы все равно получим недействительный HTML как таковой.При этом предположим, что указанное выше значение содержит вредоносный html / javascript.

1 Ответ

0 голосов
/ 16 ноября 2018

Если вы хотите показать результат, вы можете использовать тег xmp.

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/xmp

div {
  font-family: sans-serif;
}
<div>
  <p>This is some HTML</p>
</div>
<xmp>
  <p>This is some HTML</p>
</xmp>

Вы также можете добавить необработанный HMTL к элементу и вернуть обратно textContent или innerText, а затем добавить его на свою страницу.

let html = "<ol><li>This is some HTML</li><li>And some more</li></ol>";

let unsanitized = document.querySelector('#unsanitized');
let sanitized = document.querySelector('#sanitized');

let tempEl = document.createElement('div');
tempEl.innerHTML = html;

unsanitized.innerHTML = html;
sanitized.innerHTML = tempEl.textContent;
<div id="unsanitized"></div>
<div id="sanitized"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...