Иногда серверная сторона генерирует строки, которые будут встроены в встроенный код JavaScript. Например, если "ASPNAME" должно быть создано "UserName". Тогда это выглядит.
<script>
var username = "<%UserName%>";
</script>
Это небезопасно, потому что пользователь может иметь свое имя
</script><script>alert('bug')</script></script>
Это уязвимость XSS.
Итак, в основном, код должен быть:
<script>
var username = "<% JavascriptEncode(UserName)%>";
</script>
Что JavascriptEncode - это добавить charater "\" до "/" и "'" и "". Итак, выходной html похож. var username = "</ script > alert (\ 'bug \') </script> </script> ";
Браузер не будет интерпретировать " </ script > " как конец блока script. Таким образом, XSS во избежание.
Однако все еще есть "<" и " > ". Также предлагается избегать этих двух персонажей. Прежде всего, я не считаю, что это хорошая идея изменить "<". "& lt;" и " > " на "& gt;" Вот. И я не уверен, что меняю "<" на "\ <" и " > " до "\ > " распознается для всех браузеров. Кажется, нет необходимости делать дальнейшее кодирование для "<" и " > ".
Есть ли какие-либо предложения по этому поводу?
Спасибо.