XSS профилактика и .innerHTML

Когда я разрешаю пользователям вставлять данные в качестве аргумента в JSinnerHTML функционировать так:

element.innerHTML = “User provided variable”;

Я понял, что для предотвращения XSS мне нужно кодировать HTML, а затем JS кодировать пользовательский ввод, потому что пользователь может вставить что-то вроде этого:

<img src=a onerror='alert();'>

Только HTML или только JS кодирование не помогло бы, потому что.innerHTML Метод, как я понял, декодирует ввод перед вставкой на страницу. С кодировкой HTML + JS я заметил, что.innerHTML декодирует только JS, но кодировка HTML остается.

Но я смог добиться того же самого путем двойного кодирования в HTML.

Мой вопрос: может ли кто-нибудь привести пример того, почему я должен кодировать HTML, а затем кодировать JS, а не дважды кодировать в HTML при использовании.innerHTML метод?

Ответы на вопрос(3)

Ваш ответ на вопрос