Уязвимость 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, ''');
}