Это дополнительное от комментариев здесь.
Я использую SquareSpace для создания своего сайта, а для некоторых вещей мне нравится использовать их блоки HTML-кода непосредственно внутристраницы, и включить некоторый JavaScript в этом (в <script></script>
) блоке. Проблема в том, что AJAX-загрузка SquareSpace вставляет этот узел скрипта как innerHTML в код div, поэтому скрипт не выполняется.
Итак, я добавил некоторый код для всего сайта, который обнаруживает вновь вставленные блоки кода SquareSpace, ищет в них узел <script>
, а затем повторно вставляет узел сценария ( с использованием этого кода) чтобы выполнить его. Вот как выглядит мой JavaScript с кодом JQuery:
$(document).bind("DOMNodeInserted",function(e){
var script_nodes = $(e.target).find(".sqs-block-code").find("script");
script_nodes.each(function() {
var s = document.createElement('script');
s.type = 'text/javascript';
var code = this.textContent;
try {
s.appendChild(document.createTextNode(code));
$(this).after($(s));
} catch (e) {
s.text = code;
$(this).after($(s));
}
$(this).remove();
});
});
Мой вопрос заключается в том, добавляет ли это угрозу безопасности (особенно XSS). Я подумал, что, возможно, у него нет дополнительного риска, потому что если злоумышленник может вставить узел <script>
в первую очередь, тогда все равно ставки отключены?