跳转到正文
报告库
用途分类 / 数据分析

Prisma Driver Adapter Implementation Skill 安全审计

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

Required reference for Prisma ORM 7 SQL driver adapter work. Use when implementing or modifying adapters, adding database drivers, or touching SqlDriverAdapter, Transaction, savepoint, result mapping, or DriverAdapterError behavior. Covers current transaction lifecycle, optional savepoint hooks, original database-error preservation, and verification.

第三方安全检查结论

发现安全风险

已检查文件
1
发现的风险
1
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。未发现风险
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 1 项风险
中风险

保留并传播数据库原始错误详情可能泄露敏感数据

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

指南要求保留原始数据库错误代码和消息,示例还复制 detail、column 和 hint。某些数据库错误的 detail 可能包含表结构、约束名称或发生冲突的实际字段值。

为什么需要注意

如果应用把 P2039、适配器异常或生产日志暴露给不可信客户端或第三方日志服务,用户数据和数据库内部结构可能随错误信息泄露。

该指南明确要求适配器保留数据库的原始错误消息,并在未识别的 PostgreSQL 错误中复制 detail、column 和 hint。若应用把这些错误返回给不受信任的客户端、写入可被低权限人员读取的日志,或让 P2039 直接显示这些字段,数据库结构、约束名称及可能出现在 detail 中的数据值可能泄露。此要求有诊断用途,并不证明已经泄露;用户可要求作者说明哪些字段会对外暴露,并在 API/日志边界进行脱敏和访问控制,同时在内部保留排障信息。

SKILL.md:202来自说明文档打开原文件
For database errors, preserve `originalCode` and `originalMessage` even when falling back to the provider-specific raw variant:
查看另外 2 个位置
SKILL.md:223来自说明文档打开原文件
  }  return {    kind: 'postgres',    code: String(error.code ?? 'N/A'),    severity: error.severity ?? 'N/A',    message: error.message,    detail: error.detail,    column: error.column,    hint: error.hint,  }
SKILL.md:240来自说明文档打开原文件
Prisma uses preserved original details when an unmapped driver error becomes `P2039`. Do not replace every unknown exception with a fabricated `GenericJs` id; rethrow genuinely unexpected non-driver errors so programming bugs remain visible.
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。未发现风险
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。未发现风险
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

8 个说明模块

该 Skill 是一份 Prisma 7 SQL 驱动适配器的实现指南;它描述查询、事务、结果映射和错误转换,但未包含安装命令、自动执行脚本或凭据收集步骤。

查看原文
SKILL.md:12来自说明文档打开原文件
Use this guide with the exact `@prisma/driver-adapter-utils` version installed by the target Prisma release. Driver adapters are a protocol boundary: type-compatible code can still corrupt values, leak connections, or break transactions.
SKILL.md:16来自说明文档打开原文件
- Implementing `SqlDriverAdapterFactory`, `SqlMigrationAwareDriverAdapterFactory`, `SqlDriverAdapter`, or `Transaction`- Adding nested-transaction/savepoint support- Mapping driver values, column metadata, bind arguments, or database errors- Debugging `P2039`, transaction leaks, shadow-database failures, or adapter-specific query behavior

事务示例要求每个事务使用专用连接,并在完成或初始化失败时释放连接;提交和回滚方法被定义为清理钩子,而不是再次执行 SQL。

查看原文
SKILL.md:131来自说明文档打开原文件
`startTransaction` must acquire one dedicated connection, start the database transaction, apply the requested isolation level, and return a `Transaction` bound to that same connection. If setup fails, release it immediately.
SKILL.md:156来自说明文档打开原文件
Prisma coordinates the SQL `COMMIT`/`ROLLBACK` through `executeRaw`. The transaction object's `commit()` and `rollback()` methods are lifecycle hooks: detach listeners and release the dedicated connection exactly once. They must not issue a second SQL commit/rollback.

影子数据库功能被限定为创建隔离数据库并在失败或释放时删除;指南明确禁止把影子适配器连接到主数据库,并要求仅关闭适配器拥有的连接池。

查看原文
SKILL.md:245来自说明文档打开原文件
- `connect()` returns a fresh usable adapter connection/pool wrapper.- Track whether the factory created the pool. `dispose()` closes owned pools and only detaches listeners from caller-owned pools unless an explicit option transfers ownership.- Implement `SqlMigrationAwareDriverAdapterFactory` only when `connectToShadowDb()` can create an isolated shadow database, connect to it, and drop it during disposal/failure cleanup.- Never point the shadow adapter at the primary database. Quote generated identifiers and use cryptographically unique names.- `getConnectionInfo()` should accurately report `schemaName`, `maxBindValues` when applicable, and `supportsRelationJoins`.
从这里开始 · 工作说明SKILL.md
prisma-driver-adapter-implementation
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。 另有 1 个章节,可在原文件中查看。
文件与检查记录1 个文件

检查范围与遗漏

逐文件查看涉及的内容

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

  • SKILL.md已纳入全文

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

  • SKILL.md工作说明

代码和说明中提到的操作

连接外部网站
SKILL.md:268来自说明文档打开原文件
- [Driver adapter interfaces](https://github.com/prisma/prisma/blob/v7/packages/driver-adapter-utils/src/types.ts)- [PostgreSQL adapter transaction implementation](https://github.com/prisma/prisma/blob/v7/packages/adapter-pg/src/pg.ts)
SKILL.md:269来自说明文档打开原文件
- [Driver adapter interfaces](https://github.com/prisma/prisma/blob/v7/packages/driver-adapter-utils/src/types.ts)- [PostgreSQL adapter transaction implementation](https://github.com/prisma/prisma/blob/v7/packages/adapter-pg/src/pg.ts)- [PostgreSQL adapter error mapping](https://github.com/prisma/prisma/blob/v7/packages/adapter-pg/src/errors.ts)
SKILL.md:270来自说明文档打开原文件
- [PostgreSQL adapter transaction implementation](https://github.com/prisma/prisma/blob/v7/packages/adapter-pg/src/pg.ts)- [PostgreSQL adapter error mapping](https://github.com/prisma/prisma/blob/v7/packages/adapter-pg/src/errors.ts)
读取了多少行
271
文件校验值(用于核对版本)
3bd71b19524639a829e49528e10f3cdc3e3bff055ddbe98fd0d9862361c8981c