У меня есть вопросы по предотвращению атак XSS.
1) Вопрос:
У меня есть шаблон HTML в виде строки Javascript (доверенный) и вставка содержимого, поступающего по запросу сервера (ненадежный).Я заменяю местозаполнители в строках HTML-шаблона этим ненадежным контентом и выводю его в DOM, используя innerHTML / Text.
В частности, я вставляю тексты, которые выводим в тегах <div>
и <p>
, которые уже присутствуютв строке шаблона HTML и значениях элементов формы, т. е. текстах в атрибуте значения входного тега, тегах select и textarea.
Правильно ли я понимаю, что каждый вставленный выше текст можно рассматривать как подконтекст HTML, поэтому я кодирую тольковот так: encodeForJavascript (encodeForHTML (вставленный_текст)).Или мне нужно кодировать тексты, которые я вставляю в атрибуты значений полей ввода для подконтекста атрибутов HTML?
После прочтения этого вопроса в OWASP я склонен думать, что последнее необходимо только в случаеЯ устанавливаю атрибут с ненадежным контентом через Javascript следующим образом: document.forms[ 0 ].elements[ 0 ].value = encodeForHTMLAttribute
, это правильно?
2) Вопрос:
Каково дополнительное значение ответов сервера кодирования на стороне сервера, которые входят вклиентская сторона через Ajax и все равно обрабатывается (как в вопросе 1).Кроме того, разве мы не рискуем проблемами при двойном кодировании контента?
Спасибо