
Company News
Socket Has Acquired Secure Annex
Socket has acquired Secure Annex to expand extension security across browsers, IDEs, and AI tools.
xss-defender
Advanced tools
Надёжная защита от XSS‑атак для современных веб‑приложений на TypeScript
XssDefender — это лёгкая TypeScript‑библиотека для детектирования и нейтрализации XSS‑векторов, включая Unicode‑обфусцированные скрипты, javascript:‑URL, data:‑URI, CSS‑expression() и десятки других приёмов, которые остаются актуальными и завтра.
npm i xss-defender
# или
yarn add xss-defender
Библиотека не имеет внешних зависимостей и легко встраивается в любую сборку.
import { XssDefender } from "xss-defender";
const defender = new XssDefender();
defender.sanitizeString(`<script>alert('XSS')</script>`);
// => ""
defender.hasXssRisks("<img src=x onerror=alert(1)>");
// => true
import {
XssDefender,
DEFAULT_SANITIZATION_CONFIG,
SanitizationConfig,
} from "xss-defender";
const config: Partial<SanitizationConfig> = {
...DEFAULT_SANITIZATION_CONFIG,
allowedTags: ["p", "a"],
allowedAttributes: ["href"],
stripIgnoreTag: true,
enableLogging: true,
logFormat: "detailed",
};
const defender = new XssDefender(config);
| Метод | Описание |
|---|---|
sanitizeString(value) | Возвращает очищенную строку. null/undefined/"" → "". |
hasXssRisks(value) | true, если в строке найден потенциальный XSS. |
sanitizeObject(obj) | Рекурсивно проходит по объекту/массиву и очищает все строковые поля. |
sanitizeHtmlForElement(el, html) | Безопасно устанавливает innerHTML DOM‑элемента. |
checkUrlParams(params) | Анализирует URL‑параметры: { isSafe, issues[] }. |
setConfig(partial) | Патч‑обновление конфигурации на лету. |
getConfig() | Текущая конфигурация (readonly). |
| Поле | Тип | По умолчанию | Значение |
|---|---|---|---|
allowedTags | string[] | список распространённых безопасных тегов | Какие теги оставить живыми. |
allowedAttributes | string[] | ["id","class","style","href","target","src"] | Разрешённые атрибуты для разрешённых тегов. |
stripIgnoreTag | boolean | false | true — вырезать запрещённые теги, false — HTML‑кодировать их. |
enableLogging | boolean | false | Включить консольное логирование. |
logFormat | 'simple' | 'detailed' | 'simple' | Формат логов. |
Совет: оставляйте
stripIgnoreTag = true, если очищаете данные перед вставкой в DOM. Кодирование полезно при хранении/отображении «как есть».
const { isSafe, issues } = defender.checkUrlParams({
search: "<script>alert(1)</script>",
page: "2",
});
if (!isSafe) {
console.warn("Опасные параметры!", issues);
}
sanitizeString подходит для любого UI‑фреймворка. Просто пропускайте туда данные, полученные от пользователя или API, прежде чем показать их в dangerouslySetInnerHTML / v-html / innerHTML.
npm test
В репозитории лежат spec‑тесты на Jest (см. spec/core/xss-defender.spec.ts). Они демонстрируют работу со сложными нагрузками: смешанный регистр, скрытые комментарии, Unicode‑экранирование.
Ваши PR и идеи приветствуются!
feature/<название>.npm i и npm test — убедитесь, что все тесты зелёные.Перед отправкой не забудьте добавить/обновить тесты для новых сценариев.
MIT © 2025 — Вы.
FAQs
A standalone library for XSS sanitization and detection.
The npm package xss-defender receives a total of 4 weekly downloads. As such, xss-defender popularity was classified as not popular.
We found that xss-defender demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket has acquired Secure Annex to expand extension security across browsers, IDEs, and AI tools.

Research
/Security News
Socket is tracking cloned Open VSX extensions tied to GlassWorm, with several updated from benign-looking sleepers into malware delivery vehicles.

Product
Reachability analysis for PHP is now available in experimental, helping teams identify which vulnerabilities are actually exploitable.