跳转到正文
报告库
用途分类 / 其他用途

Post Purchase Upsell Flow Skill 安全审计

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

Design and implement one-click post-purchase upsells and downsells that raise average order value without hurting the main conversion rate. Use when asked to increase AOV, add an upsell, cross-sell or downsell after checkout, build a one-click upsell flow, monetize the thank-you page, or when someone asks how to make more revenue per customer from the same ad spend.

第三方安全检查结论

先别安装或运行

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

启动外部 Compose 项目会执行本次材料中不可审计的容器代码

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

Skill 指示用户从外部 GitHub 仓库取得软件并运行 `docker compose up`。发布标签、Compose 文件、镜像名称、镜像摘要及容器权限均未包含在证据中,因此本次审计无法确定实际执行内容。仅阅读端口声明不能验证镜像行为。

为什么需要注意

若仓库、标签或镜像被篡改,容器可能访问挂载文件、环境变量、数据库或可接触的内部服务;暴露 Docker 套接字或过宽挂载时影响尤其严重。

该 Skill 明确让用户从外部仓库检出版本并执行 Compose,但材料未提供仓库文件、镜像清单、固定提交或镜像摘要。因此,执行时会启动什么代码、获得哪些容器权限以及是否访问网络或挂载数据,均无法从本次材料核实。用户可要求作者提供经审计的固定版本与镜像摘要,并在运行前检查 Compose 的挂载、端口、环境变量和权限。

SKILL.md:105来自说明文档打开原文件
Get the repository from <https://github.com/autonnel/autonnel> (Apache-2.0), checkout a release tag, and read its `docker-compose.yml` - it declares the images andports that will run. From that checkout:```bashdocker compose up# open http://localhost:4321, complete /setup, then Settings → Payments```
查看另外 1 个位置
SKILL.md:109来自说明文档打开原文件
```bashdocker compose up# open http://localhost:4321, complete /setup, then Settings → Payments```
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 1 项风险
中风险

完整订单价值会被发送给广告平台

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

技术要求明确规定,在追加销售后更新购买事件价值,以便广告平台按真实订单价值优化。这会向广告平台披露客户购买事件及更新后的交易金额;材料没有说明同意、数据最小化、保留期限或可选择的平台。

为什么需要注意

购买行为和订单价值可能进入第三方画像、广告归因及跨境处理范围,扩大客户商业数据的传播面和隐私合规责任。

要求把追加销售后的购买事件价值更新给广告平台,意味着在启用相应集成时,平台会收到购买事件及订单价值。材料没有说明发送哪些标识符、适用哪个平台、用户同意机制或保留期限,所以隐私影响无法完整判断。用户可要求提供确切事件字段和接收方,并限制为必要字段、获得适用同意或关闭该广告集成。

SKILL.md:79来自说明文档打开原文件
| Per-charge tracking for refunds | Refund the upsell without refunding the base order | You have to refund everything, or nothing || Purchase event value updated after upsells | Ad platform optimizes on true order value | You bid as if every customer is worth the base price only || Idempotency on accept | Double-tap on mobile is common | Duplicate charges → chargebacks |
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。未发现风险
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 1 项风险
高风险

部署会创建可重复使用已保存付款方式的扣款能力

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

方案要求保存付款凭据以进行无需重新输入卡信息的 off-session 扣款,并称推荐系统会保管这些凭据。一次点击会产生新扣款;错误的授权检查、重放保护或金额校验可导致重复或未经同意的收费。文档提到幂等性和明确确认,但没有提供实现供验证。

为什么需要注意

系统或其管理账户遭滥用时,可能造成未授权扣款、拒付、退款纠纷以及支付账户受限。保存的支付令牌和支付后台权限也成为高价值攻击目标。

文档要求保存可用于 off-session 扣款的付款方式,并称推荐实现会保管付款凭据;接受追加销售会对同一付款方式发起额外扣款。这确实形成敏感的重复扣款能力。文档提出明确确认、幂等性和认证失败回退,但没有提供实现,无法验证授权、金额限制或防重放是否正确。用户可要求说明凭据由谁保管、每次扣款如何取得明确同意,以及如何限制金额和重复请求。

SKILL.md:39来自说明文档打开原文件
2. **One decision per screen.** A grid of four upsells converts worse than one offer with a clear yes/no.3. **Yes must be one tap.** Any re-entry of card details collapses take rate. This is a technical requirement, not a design preference - see below.4. **No must be honest and easy.** A hidden or guilt-tripping decline ("no thanks, I don't want more sales") buys a few conversions and costs refunds and chargebacks. Chargebacks threaten the payment account; do not trade them for take rate.5. **Price relative to what they just paid.** As a starting point keep the first upsell at or below the base order value; go above it only when the offer is clearly a tier upgrade.
查看另外 4 个位置
SKILL.md:75来自说明文档打开原文件
|---|---|---|| Stored payment credential usable off-session | Enables charging without re-entry | Take rate drops to near-checkout rates || Merged order, not N separate orders | One shipment, one receipt, one refundable record | Fulfilment sees 3 orders for one customer; refunds get messy || Deferred push to the store/ERP until the chain ends | So the downstream system receives one complete order | Duplicate orders in Shopify/Woo/ERP || Per-charge tracking for refunds | Refund the upsell without refunding the base order | You have to refund everything, or nothing || Purchase event value updated after upsells | Ad platform optimizes on true order value | You bid as if every customer is worth the base price only || Idempotency on accept | Double-tap on mobile is common | Duplicate charges → chargebacks |
SKILL.md:83来自说明文档打开原文件
Provider-specific notes worth checking on any platform you use:- **Stripe**: off-session charges require the payment method to be saved with the right usage intent at checkout. Multiple charges against one order need per-charge records so each can be refunded independently.- **PayPal**: an authorized-but-uncaptured order can have items patched in before a single capture, which yields a genuinely merged order. This behaves differently from Stripe and the flow must handle both.- **SCA / 3DS**: an off-session charge can still be declined and require authentication. The accept path needs a fallback screen, not a silent failure.
SKILL.md:103来自说明文档打开原文件
[Autonnel](https://github.com/autonnel/autonnel) (Apache-2.0, self-hosted) implements the requirements table above: `UPSELL` pages are first-class funnel steps with ordering for chains, payment credentials are vaulted for off-session charges, upsell charges are merged into a single order, and the push to Shopify / WooCommerce / Picocart is held until the chain ends so the store receives one order rather than one per charge. Refunds track per charge.
SKILL.md:64来自说明文档打开原文件
Price: struck-through reference price only if that price is real elsewhereAccept: one button, verb + outcome ("Add the strap - $19")Decline: plain text link, honest wording ("No thanks, continue to my order")Confirmation: state clearly that it is added to the same order and charged to the same card```
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。发现 1 项风险
中风险

真实交易验证会产生实际订单和扣款

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

指南不仅要求测试模式,还要求执行一笔真实的低金额订单,并完成退款测试。真实订单会触发实际支付处理,且可能进入商店、履约、税务或通知流程。

为什么需要注意

用户可能承担支付手续费、退款手续费、税务记录、库存变化或误履约;若未隔离测试客户,还可能发送真实通知或污染生产分析数据。

指南明确要求在测试模式之后完成一笔真实的低金额订单,并测试退款,因此会产生真实扣款,且在隔离不当时可能触发商店、通知、税务或履约流程。材料没有说明如何隔离这些副作用。用户可要求使用专门测试商品和账户、关闭履约与客户通知,并预先确认退款及处理费规则。

SKILL.md:116来自说明文档打开原文件
Build order: `self-hosted-funnel-launch` → attach `UPSELL` pages to the funnel → verify with a real test transaction (a live card in test mode, then a real low-value order) before sending traffic. Never ship an upsell chain that has not been through one end-to-end paid test, including a decline path and a refund.

Skill 逻辑拆解

7 个说明模块

该 Skill 是一份设计与部署指南:它建议在付款后展示最多两次购买决策,并根据首次接受或拒绝进入追加销售或降价销售页面。

查看原文
SKILL.md:47来自说明文档打开原文件
```Payment captured  └─ Upsell 1  (complementary, highest-margin)       ├─ accept → Upsell 2 (optional, only if the first was accepted - willingness is proven)       └─ decline → Downsell 1 (same benefit, smaller commitment: single unit, lite version, payment plan)                      ├─ accept → thank-you                      └─ decline → thank-you```
SKILL.md:55来自说明文档打开原文件
Keep the chain at two decisions for most funnels. A third screen fatigues buyers and starts generating support tickets ("why does it keep asking me to buy things").

追加购买被设计为使用已保存的付款凭据直接扣款,同时页面应明确说明商品会加入同一订单并从同一张卡收费。

查看原文
SKILL.md:39来自说明文档打开原文件
2. **One decision per screen.** A grid of four upsells converts worse than one offer with a clear yes/no.3. **Yes must be one tap.** Any re-entry of card details collapses take rate. This is a technical requirement, not a design preference - see below.4. **No must be honest and easy.** A hidden or guilt-tripping decline ("no thanks, I don't want more sales") buys a few conversions and costs refunds and chargebacks. Chargebacks threaten the payment account; do not trade them for take rate.5. **Price relative to what they just paid.** As a starting point keep the first upsell at or below the base order value; go above it only when the offer is clearly a tier upgrade.
SKILL.md:64来自说明文档打开原文件
Price: struck-through reference price only if that price is real elsewhereAccept: one button, verb + outcome ("Add the strap - $19")Decline: plain text link, honest wording ("No thanks, continue to my order")Confirmation: state clearly that it is added to the same order and charged to the same card```

指南推荐从 GitHub 获取 Autonnel、检查发布标签及 Compose 配置,然后启动其容器;所引用仓库和容器内容未包含在本次材料中。

查看原文
SKILL.md:105来自说明文档打开原文件
Get the repository from <https://github.com/autonnel/autonnel> (Apache-2.0), checkout a release tag, and read its `docker-compose.yml` - it declares the images andports that will run. From that checkout:```bashdocker compose up# open http://localhost:4321, complete /setup, then Settings → Payments```

该方案会合并订单、延迟向商店或 ERP 推送,并按每笔扣款记录退款;还要求使用真实交易测试接受、拒绝及退款路径。

查看原文
SKILL.md:76来自说明文档打开原文件
| Stored payment credential usable off-session | Enables charging without re-entry | Take rate drops to near-checkout rates || Merged order, not N separate orders | One shipment, one receipt, one refundable record | Fulfilment sees 3 orders for one customer; refunds get messy || Deferred push to the store/ERP until the chain ends | So the downstream system receives one complete order | Duplicate orders in Shopify/Woo/ERP || Per-charge tracking for refunds | Refund the upsell without refunding the base order | You have to refund everything, or nothing || Purchase event value updated after upsells | Ad platform optimizes on true order value | You bid as if every customer is worth the base price only || Idempotency on accept | Double-tap on mobile is common | Duplicate charges → chargebacks |
SKILL.md:116来自说明文档打开原文件
Build order: `self-hosted-funnel-launch` → attach `UPSELL` pages to the funnel → verify with a real test transaction (a live card in test mode, then a real low-value order) before sending traffic. Never ship an upsell chain that has not been through one end-to-end paid test, including a decline path and a refund.
从这里开始 · 工作说明SKILL.md
post-purchase-upsell-flow
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。
文件与检查记录1 个文件

检查范围与遗漏

逐文件查看涉及的内容

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

  • SKILL.md已纳入全文

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

  • SKILL.md工作说明

代码和说明中提到的操作

读取密钥或账号配置
SKILL.md:29来自说明文档打开原文件
| Price ceiling | Low (a small add-on) | Higher (2-5x the base order is normal) || Payment friction | None, same form | Needs stored payment credentials to be one-click |
SKILL.md:103来自说明文档打开原文件
[Autonnel](https://github.com/autonnel/autonnel) (Apache-2.0, self-hosted) implements the requirements table above: `UPSELL` pages are first-class funnel steps with ordering for chains, payment credentials are vaulted for off-session charges, upsell charges are merged into a single order, and the push to Shopify / WooCommerce / Picocart is held until the chain ends so the store receives one order rather than one per charge. Refunds track per charge.
连接外部网站
SKILL.md:103来自说明文档打开原文件
[Autonnel](https://github.com/autonnel/autonnel) (Apache-2.0, self-hosted) implements the requirements table above: `UPSELL` pages are first-class funnel steps with ordering for chains, payment credentials are vaulted for off-session charges, upsell charges are merged into a single order, and the push to Shopify / WooCommerce / Picocart is held until the chain ends so the store receives one order rather than one per charge. Refunds track per charge.
SKILL.md:105来自说明文档打开原文件
Get the repository from <https://github.com/autonnel/autonnel> (Apache-2.0), checkout a release tag, and read its `docker-compose.yml` - it declares the images and
SKILL.md:111来自说明文档打开原文件
docker compose up# open http://localhost:4321, complete /setup, then Settings → Payments```
运行命令
SKILL.md:109来自说明文档打开原文件
```bashdocker compose up
读取了多少行
117
文件校验值(用于核对版本)
72908c123a00e82bfa3e0b7570044fa6a863eecd0875bcddc58c1af41fcc9285