Я изучаю XSS-атаки и способы их предотвращения.
Я уже знаю, что должен следовать шпаргалке OWASP XSS Prevention - я согласен и не хочу задавать вопросы по этому поводу.
Что я действительно хочу понять, так это то, как можно использовать уязвимость XSS.
Например, учитывая следующий код:
<script>
var param = "{{unsecure_data}}";
</script>
Тогда, если
unsecure_data = "; alert('xss'); var x = "
, предыдущий сценарий становится
<script>
var param = ""; alert('xss'); var x = "";
</script>
и предупреждение('xss') выполняется;
Но если у меня есть следующий код:
// throw exception if validated_data contains the character " (double quote)
validate(validated_data);
<script>
var param = "{{validated_data}}";
</script>
, где моя логика проверки гарантирует, что validated_data не может иметь символ "(двойная кавычка) внутри него,
тогда как этот код может быть взломан?
РЕДАКТИРОВАТЬ: как показывает Габор, код может быть взломан с использованием
validated_data = </script><script>alert(1)</script>
Но если я улучшу логику проверки доубедитесь, что на вводе нет символов <или>?
Большое спасибо