patel-vansh/svelte-safe-html-core
GitHub: patel-vansh/svelte-safe-html-core
Svelte 组件中不安全 HTML 插入的静态检测库,帮助开发者在编译期发现未经净化处理的原始 HTML 渲染以防范 XSS 漏洞。
Stars: 7 | Forks: 0
# @svelte-safe-html/core
[](https://www.npmjs.com/package/@svelte-safe-html/core)
[](LICENSE)
[](https://github.com/patel-vansh/svelte-safe-html-core/actions)
## ✨ 概述
Svelte 允许通过 `{@html ...}` 标签渲染原始 HTML,如果内容未经过净化处理,可能会使你的应用面临 **XSS 攻击**。
此静态分析包会分析 `.svelte` 文件,并检测不安全的 `{@html}` 插入,包括:
- 未使用净化器函数(如 `sanitize()` 或 `escapeHtml()`)。
- 未通过 `` 显式忽略的。
兼容以下版本:
- ✅ Svelte 3
- ✅ Svelte 4
- ✅ Svelte 5(旧版)
- ⚙️ 即将支持 Runes 模式
## 🚀 安装说明
```
npm install @svelte-safe-html/core --save-dev
```
或者
```
pnpm add -D @svelte-safe-html/core
```
由于 Svelte 是作为 peer dependency 添加的,请确保它已安装在你的项目中:
```
npm install svelte
```
## 🧠 用法
```
import { findUnsafeHtml } from '@svelte-safe-html/core';
import fs from 'fs';
const code = fs.readFileSync('src/App.svelte', 'utf8');
const result = findUnsafeHtml(code, 'App.svelte', ['sanitize', 'escape']);
console.log(result);
/*
{
filename: 'App.svelte',
parsed: true,
error: null,
warnings: [
{
filename: 'App.svelte',
start: { line: 10, column: 8 },
end: { line: 10, column: 40 },
message: 'Unsafe raw HTML insertion without sanitizer'
}
]
}
*/
```
## ⚙️ API
`findUnsafeHtml(code, filename, ignoreFunctions?, runes?)`
| 参数 | 类型 | 描述 |
|:---:|:---:|:---:|
| `code` | `string` | 要分析的 Svelte 源代码。 |
| `filename` | `string` | 用于警告信息。 |
| `ignoreFunctions` | `string[]`(可选) | 被视为安全的净化器函数数组。 |
| `runes` | `boolean`(可选,默认为 false) | 启用 Svelte 5 runes 模式的解析。 |
#### 返回值:
```
{
filename: string;
parsed: boolean;
error: Error | null;
warnings: {
filename: string;
start: {
line: number;
column: number;
};
end: {
line: number;
column: number;
};
message: string;
}[];
}
```
## 🧪 测试
要在本地运行完整的兼容性测试套件:
```
npm run test:all
```
执行后将:
- 针对 Svelte 3、4 和 5(旧版)进行安装和测试
- 使用 Vitest 运行所有基于 fixture 的测试
你也可以针对单一特定版本(在其对应的文件夹内)运行测试:
```
cd tests/svelte4
npm test
```
## 🧩 路线图
- [ ] 支持 Svelte 5 runes 模式
## License
[MIT License](LICENSE)
## 贡献
如果你有任何想法、建议或发现了问题 —— 欢迎提交 PR!
让我们共同让所有人的 Svelte 安全变得更简单、更安全 🚀
标签:MITM代理, SBOM分析, Svelte, XSS防御, 云安全监控, 代码安全检查, 暗色界面, 自定义脚本, 静态分析