Веб-безпека · Middle · Запитання 12 з 75
Стан із серверного рендерингу вбудовується так: <script>window.__STATE__ = ${JSON.stringify(state)}</script>. У чому проблема?
- ✓Правильна відповідь: Рядок із
</script>закриває тег раніше й дає XSS;<треба екранувати (наприклад, як\u003c) - 2
JSON.stringifyвидаляє всі рядки - 3Проблеми немає, JSON завжди безпечний усередині тегу script
Пояснення
HTML-парсер бачить </script> раніше, ніж виконується JavaScript. Фреймворки й серіалізатори, створені для цього, екранують <, > і /.