# xss-scan

Ищет уязвимости межсайтового скриптинга в коде на React, Vue и JavaScript. Показывает проблемную строку, уровень риска и готовый безопасный паттерн.

- команда · `type=command` · Claude Code, Codex, Cursor · ★ 41823
- Автор: Seth Hobson
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/wshobson/agents/tree/HEAD/plugins/frontend-mobile-security/commands/xss-scan.md
- Обновлён: 2026-10-24
- HTML: https://affpapa.org/nevibecode/commands/xss-scan

## Что делает

Команда запускает статический анализ клиентского кода на наличие векторов XSS (CWE-79). Она отслеживает небезопасные методы манипуляции с DOM вроде `innerHTML`, `outerHTML` и `document.write`. Также проверяется передача пользовательских данных в свойства `location.href` и вызовы `window.open`.

Отдельный блок правил проверяет фреймворки. Для React команда ищет небезопасный рендеринг через `dangerouslySetInnerHTML`, а для Vue — директиву `v-html`. Скрипт анализирует код на вызовы санитизации: если рядом нет обработки библиотекой `DOMPurify`, находка помечается как опасная.

Без проверки протоколов в адресах перенаправления легко пропускают выполнение псевдопротокола `javascript:`. В отчёте команда указывает уровень риска от low до critical, файл, строку и сниппет с безопасной заменой через `textContent` или санитизатор.

## Установка

### Claude Code (родная платформа)

1. **Через маркетплейс плагинов**
В чате агента (не в терминале):
```text
/plugin marketplace add wshobson/agents
```
В чате агента (не в терминале):
```text
/plugin install frontend-mobile-security@claude-code-workflows
```

2. **Вручную: положить файлы**
- Файл: `.claude/commands/xss-scan.md` — Вызов — /xss-scan. Для всех проектов — ~/.claude/commands/

### Codex

**Вручную: положить файлы**
- Файл: `~/.codex/prompts/xss-scan.md` — Вызов — /prompts:xss-scan. В Codex этот формат помечен устаревшим, замена — скиллы

### GitHub Copilot

**Вручную: положить файлы**
- Файл: `.github/prompts/xss-scan.prompt.md`

### Gemini CLI

**Вручную: положить файлы**
- Файл: `.gemini/commands/xss-scan.toml` — Gemini хранит команды в TOML: текст запроса — в поле prompt

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/wshobson/agents/tree/HEAD/plugins/frontend-mobile-security/commands/xss-scan.md

## Когда брать
- Найти вставки сырого HTML через `dangerouslySetInnerHTML` и `v-html`
- Выявить передачу параметров пользователя в `location.href`
- Получить примеры санитизации разметки через библиотеку `DOMPurify`
- Проверить клиентский JavaScript-код на соответствие CWE-79

## Примеры запросов агенту
- Просканируй папку `src` на уязвимости XSS и покажи опасные вставки в DOM
- Проверь компоненты React на использование `dangerouslySetInnerHTML` без санитизации
- /xss-scan src/components

## Похожие
- [hookify](https://affpapa.org/nevibecode/commands/hookify.md) — команда · ★ 44770
- [modernize-harden](https://affpapa.org/nevibecode/commands/modernize-harden.md) — команда · ★ 44770
- [modernize-assess](https://affpapa.org/nevibecode/commands/modernize-assess.md) — команда · ★ 44770
- [security-audit](https://affpapa.org/nevibecode/commands/security-audit.md) — команда · 1485 установок
- [supabase-security-audit](https://affpapa.org/nevibecode/commands/supabase-security-audit.md) — команда · 1020 установок

Из того же набора: [wshobson/agents](https://affpapa.org/nevibecode/by/wshobson/agents.md) — 432 карточки

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
