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 [![npm version](https://img.shields.io/npm/v/@svelte-safe-html/core.svg?color=33cd56)](https://www.npmjs.com/package/@svelte-safe-html/core) [![License](https://img.shields.io/npm/l/@svelte-safe-html%2fcore.svg)](LICENSE) [![Tests](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/ae9ec12e91160552.svg)](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防御, 云安全监控, 代码安全检查, 暗色界面, 自定义脚本, 静态分析