dgknbtl/jaga

GitHub: dgknbtl/jaga

一款零依赖、上下文感知的 HTML 模板安全层,在用户输入与 DOM 之间提供轻量级的 XSS 防护。

Stars: 5 | Forks: 0

# 🛡️ Jaga [![npm version](https://img.shields.io/npm/v/jagajs.svg?style=flat-square)](https://www.npmjs.com/package/jagajs) [![bundle size](https://img.shields.io/bundlephobia/minzip/jagajs?label=size&style=flat-square)](https://bundlephobia.com/result?p=jagajs) [![license](https://img.shields.io/npm/l/jagajs.svg?style=flat-square)](https://github.com/dgknbtl/jaga/blob/main/LICENSE) [![typed](https://img.shields.io/badge/types-TypeScript-blue?style=flat-square)](https://www.typescriptlang.org/) **Jaga** 是一个用于 HTML 模板的超轻量级、零依赖安全层,在用户输入和 DOM 之间提供上下文感知的 XSS 保护。 阅读 [Jaga 宣言](MANIFESTO.md) ## 功能 - **智能上下文感知**:自动识别多部分属性、连续属性和闭合标签中的注入上下文 —— 针对 `text`、`attr`、`url` 和 `css` 上下文应用正确的转义规则。 - **HTML Sanitizer**:SSR 原生白名单 sanitizer (`jagajs/sanitize`) —— 零依赖,适用于 Node.js、Bun、Deno。开箱即用地包含对 `data-*` 属性的支持。 - **CSS 上下文保护**:通过词法分析和严格转义,防止 `style` 属性中的 CSS Injection。 - **内置 URL Sanitization**:主动拦截 `javascript:` 及其他危险协议,包括编码绕过尝试。 - **原生 Trusted Types 支持**:自动与浏览器的 Trusted Types API 集成,实现超安全的 DOM 赋值。 - **安全的 JSON 注入**:`j.json(data)` 可将状态安全地嵌入 `` 越狱问题。 ``` const state = { user: "Admin", bio: "", }; const html = j` `; ``` ### 3. 列表渲染 **Jaga** 能够无缝且安全地处理数组: ``` const items = ["Safe", "Bold", "Italic"]; const list = j`
    ${items.map((i) => j`
  • ${i}
  • `)}
`; ``` ### 4. 智能 Minifier **Jaga** 的 `j` 标签会通过移除不必要的空白来自动压缩你的 HTML,并且它足够智能,能够忽略 `
` 和 `