XSS-уязвимость существует всякий раз, когда строка за пределами вашего приложения может интерпретироваться как код.
Например, если вы генерируете HTML, выполняя это:
<BODY>
<?= $myQueryParameter ?>
</BODY>
тогда, если переменная $myQueryParameter
содержит тег <SCRIPT>
, то в итоге она выполнит код.
Чтобы предотвратить выполнение ввода в виде кода, необходимо экранировать содержимое должным образом.
Приведенную выше проблему можно решить, поняв, что переменная $myQueryParameter
содержит простой текст, но вы не можете просто перейти и вставить простой текст в HTML и ожидать, что он будет работать.
Так что вам нужно конвертировать простой текст в HTML, чтобы вы могли поместить его на свою HTML-страницу. Этот процесс преобразования строки на одном языке в другой, чтобы ее можно было встроить, завершается.
Вы можете экранировать простой текст в HTML с помощью такой функции:
function escapePlainTextToHTML(plainText) {
return plainText.replace(/\0/g, '')
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}