dgknbtl/jaga
GitHub: dgknbtl/jaga
一款零依赖、上下文感知的 HTML 模板安全层,在用户输入与 DOM 之间提供轻量级的 XSS 防护。
Stars: 5 | Forks: 0
# 🛡️ Jaga
[](https://www.npmjs.com/package/jagajs)
[](https://bundlephobia.com/result?p=jagajs)
[](https://github.com/dgknbtl/jaga/blob/main/LICENSE)
[](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} `)}
` 和 `