跳转到正文
报告库
用途分类 / 开发辅助

Modern Javascript Patterns Skill 安全审计

作者说它能做什么(原文)

Master ES6+ features including async/await, destructuring, spread operators, arrow functions, promises, modules, iterators, generators, and functional programming patterns for writing clean, efficient JavaScript code. Use when refactoring legacy code, implementing modern patterns, or optimizing JavaScript applications.

第三方安全检查结论

发现安全风险

已检查文件
3
发现的风险
2
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。发现 1 项风险
中风险

HTML 模板示例未转义插值,复制使用时可能造成脚本注入

原文依据:1 处
发现了什么

`highlight` 将传入值直接拼接到 `<mark>` HTML 中,没有进行 HTML 转义。示例中的值是固定姓名和年龄,但该通用函数没有限制输入来源。

为什么需要注意

如果网站把用户提交的姓名、搜索词或其他不可信文本传给此函数,再把结果作为 HTML 插入页面,攻击者可能注入标签或脚本,并以当前用户身份读取页面数据或执行操作。

这段证据能说明什么

这是展示标签模板的示例,函数确实把值直接拼入 HTML,但可见代码只传入固定的姓名和年龄,也没有把结果写入 DOM 或其他 HTML 解析入口。只有在调用者传入不可信字符串并将返回值作为 HTML 解析时,才可能发生脚本注入;当前来源不足以证明这种用法。用户可要求作者明确标注该函数不适合不可信输入,或提供转义示例。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
references/details.md:200来自说明文档打开原文件
// Tagged template literalsfunction highlight(strings, ...values) {  return strings.reduce((result, str, i) => {    const value = values[i] || "";    return result + str + `<mark>${value}</mark>`;  }, "");}const name = "John";const age = 30;const html = highlight`Name: ${name}, Age: ${age}`;// Output: "Name: <mark>John</mark>, Age: <mark>30</mark>"```
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。未发现风险
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。未发现风险
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 1 项风险
中风险

密码类示例会明文保存初始密码,并用可逆前缀冒充后续哈希

原文依据:3 处
发现了什么

构造函数把密码原样写入私有字段;所谓 `#hashPassword` 只添加 `hashed_` 前缀。JavaScript 私有字段仅限制代码访问,不等于安全存储或密码哈希。

为什么需要注意

如果该示例被复制到真实身份验证或持久化代码,密码可能以明文或可轻易还原的形式保留;数据泄露时会直接暴露用户凭据,并可能危及用户复用密码的其他账户。

该教学示例的构造函数将初始密码原样存入私有字段,而密码更新仅添加固定的 `hashed_` 前缀。私有字段限制普通属性访问,但不提供安全密码哈希;若用户把此示例用于真实账户,密码泄露后可直接暴露或轻易还原。虽然代码位于“现代类特性”示例中而非认证实现,风险仍值得明确警示。用户可要求作者改用明显的占位验证逻辑,或注明真实系统必须使用专用的带盐慢哈希。

references/advanced-patterns.md:255来自说明文档打开原文件
  constructor(id, name, password) {    this.id = id;    this.name = name;    this.#password = password;    User.count++;  }  // Public method  greet() {    return `Hello, ${this.name}`;  }  // Private method  #hashPassword(password) {    return `hashed_${password}`;  }
查看另外 2 个位置
references/advanced-patterns.md:277来自说明文档打开原文件
  // Setter  set password(newPassword) {    this.#password = this.#hashPassword(newPassword);  }
references/advanced-patterns.md:267来自说明文档打开原文件
  // Private method  #hashPassword(password) {    return `hashed_${password}`;  }  // Getter  get displayName() {    return this.name.toUpperCase();  }  // Setter  set password(newPassword) {    this.#password = this.#hashPassword(newPassword);  }
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

3 个说明模块

这是一个现代 JavaScript 编程指南。其主要指令是按需阅读两个参考文档;提供的材料中没有安装步骤、命令执行脚本或要求访问用户文件的指令。

查看原文
SKILL.md:21来自说明文档打开原文件
## Detailed patterns and worked examplesDetailed pattern documentation lives in `references/details.md`. Read that file when the navigation tier above is insufficient.
SKILL.md:43来自说明文档打开原文件
For common pitfalls (this binding, promise anti-patterns, memory leaks), see [references/advanced-patterns.md](references/advanced-patterns.md).

网络请求仅出现在教学代码示例中,包括相对 API 路径、分页请求和重试函数;没有证据表明安装或调用此 Skill 会自行发送这些请求。

查看原文
references/details.md:327来自说明文档打开原文件
```javascript// Async function always returns a Promiseasync function fetchUser(id) {  const response = await fetch(`/api/users/${id}`);  const user = await response.json();  return user;}
references/advanced-patterns.md:388来自说明文档打开原文件
// Async generatorasync function* fetchPages(url) {  let page = 1;  while (true) {    const response = await fetch(`${url}?page=${page}`);    const data = await response.json();    if (data.length === 0) break;    yield data;    page++;  }}
从这里开始 · 工作说明SKILL.md
modern-javascript-patterns
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。

文件引用关系图

3 处引用
哪些文件发起引用引用了什么
连线表示真实的文件引用,不是运行顺序。点击节点可高亮相关连线,并查看具体文件和原文位置。虚线表示还有文件需要定位。
文件与检查记录3 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文
  • references/advanced-patterns.md已纳入全文
  • references/details.md已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明
  • references/advanced-patterns.md配套文件
  • references/details.md配套文件

代码和说明中提到的操作

读取文件
SKILL.md:23来自说明文档打开原文件
Detailed pattern documentation lives in `references/details.md`. Read that file when the navigation tier above is insufficient.
连接外部网站
references/advanced-patterns.md:392来自说明文档打开原文件
  while (true) {    const response = await fetch(`${url}?page=${page}`);    const data = await response.json();
references/details.md:330来自说明文档打开原文件
async function fetchUser(id) {  const response = await fetch(`/api/users/${id}`);  const user = await response.json();
references/details.md:378来自说明文档打开原文件
// Top-level await (ES2022)const config = await fetch("/config.json").then((r) => r.json());
读取了多少行
990
文件校验值(用于核对版本)
8fc6235a923d58ee2ce1113a2ed12ff2c4c229636c3c3b54f6848e5c4869a5b5