JS JavaScript  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Безопасность JavaScript-приложений

Тест проверяет XSS, CORS, CSP, безопасное обращение с недоверенными данными и расследование клиентских уязвимостей. Задания требуют выбрать защиту по контексту и понимать границы браузерных механизмов, а не искать одну волшебную настройку.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 25 вопросов и 70 минут; код лучше читать построчно, не полагаясь на первое впечатление. После завершения откроются общий процент, 5 тематических шкал и объяснение каждого решения.
Вопрос 1 из 25
Почему вывод параметра через innerHTML уязвим?
JavaScript
const name = new URLSearchParams(location.search).get("name");
greeting.innerHTML = `Привет, ${name}`;
Вопрос 2 из 25
Как безопасно показать пользовательский комментарий без разметки?
JavaScript
const p = document.createElement("p");
p.textContent = comment;
container.append(p);
Вопрос 3 из 25
Что делать, если продукт действительно разрешает ограниченный HTML?
JavaScript
preview.innerHTML = sanitizeAllowedMarkup(userHtml);
Вопрос 4 из 25
Почему экранирование для HTML-текста нельзя автоматически применять к JavaScript-строке или URL?
Вопрос 5 из 25
Защитит ли HttpOnly-cookie от всех последствий XSS?
Вопрос 6 из 25
Почему Access-Control-Allow-Origin: * несовместим с credentialed-чтением ответа?
JavaScript
fetch("https://api.example/data", { credentials: "include" });
// Ответ: Access-Control-Allow-Origin: *
Вопрос 7 из 25
Что вызывает preflight чаще всего?
JavaScript
fetch("https://api.example/items/1", {
  method: "PUT",
  headers: { "Content-Type": "application/json", "X-Trace": "1" },
  body: "{}"
});
Вопрос 8 из 25
Является ли CORS защитой серверного API от curl или вредоносного сервера?
BashКомандная строка
curl -H "Origin: https://evil.example" https://api.example/private
Вопрос 9 из 25
Почему отражать любой Origin из запроса опасно?
Вопрос 10 из 25
Для чего Vary: Origin при динамическом Allow-Origin?
Вопрос 11 из 25
Что делает script-src с nonce?
HTML/XMLHTML
<meta http-equiv="Content-Security-Policy" content="script-src 'nonce-r4nd0m'">
<script nonce="r4nd0m">start()</script>
Вопрос 12 из 25
Почему unsafe-inline ослабляет защиту script-src?
Вопрос 13 из 25
Для чего режим Content-Security-Policy-Report-Only?
ТекстЗаголовок HTTP
Content-Security-Policy-Report-Only: default-src 'self'; script-src 'self'
Вопрос 14 из 25
Какая директива управляет адресами для fetch/WebSocket?
ТекстЗаголовок HTTP
Content-Security-Policy: default-src 'self'; connect-src 'self' https://api.example
Вопрос 15 из 25
Почему CSP не должна быть единственным исправлением innerHTML-XSS?
Вопрос 16 из 25
Что проверять при получении postMessage?
JavaScript
window.addEventListener("message", event => {
  if (event.origin !== "https://pay.example") return;
  const message = validateMessage(event.data);
  apply(message);
});
Вопрос 17 из 25
Почему targetWindow.postMessage(secret, "*") рискован?
JavaScript
paymentFrame.contentWindow.postMessage(token, "*");
Вопрос 18 из 25
Как обрабатывать пользовательский redirect параметр?
JavaScript
const next = new URLSearchParams(location.search).get("next");
location.href = next;
Вопрос 19 из 25
Почему скрытие административной кнопки не защищает endpoint?
JavaScript
if (!currentUser.isAdmin) adminButton.hidden = true;
// Endpoint /api/admin/delete всё равно доступен по сети.
Вопрос 20 из 25
Чем опасно Object.assign(config, parsedUserObject) для служебного объекта?
Вопрос 21 из 25
Как описать DOM-XSS для расследования?
JavaScript
const source = location.hash.slice(1);
const html = `<img alt="${source}">`;
preview.innerHTML = html;
Вопрос 22 из 25
Почему тест только со строкой <script>alert(1)</script> недостаточен?
Вопрос 23 из 25
Что делать с отчётом CSP, содержащим URL страницы?
Вопрос 24 из 25
Как подтвердить исправление postMessage-уязвимости?
Вопрос 25 из 25
Какой первый шаг при обнаружении активной XSS в выпуске?

Ответьте на все 25 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу