商店更新:联系卖家与安全数字下载

2026年9月10日

今天我们推出两项备受社区期待的重大商店功能:让买家在购买前向卖家提问的途径,以及可下载产品的安全数字文件交付。

联系卖家 — 购买前先询问

是否曾想在购买前向店主询问关于产品的问题?现在可以了。

商店中每个产品卡片现在都有一个**“联系卖家”**按钮。点击它,输入你的问题(最多 1024 个字符),然后发送。店主会通过 Server-Sent Events (SSE) 立即收到实时通知——无需刷新页面。他们可以直接在卖家仪表板中回复,你也会在收到回复时获得通知。

工作原理

  1. 买家在任何产品上点击”联系卖家”
  2. 输入问题(最多 1024 个字符)
  3. 卖家立即收到带有消息预览的 SSE 弹窗通知
  4. 卖家在仪表板的询盘部分打开并回复
  5. 买家收到卖家已回复的 SSE 通知

频率限制

为防止垃圾信息,每位买家每 24 小时内对每个产品最多可有 5 个未关闭的询盘。这让卖家能够管理系统,同时给买家留出充足的空间进行后续提问。

支持 23 种语言

联系功能的所有界面文本已翻译为所有 23 种支持语言:阿拉伯语、孟加拉语、德语、英语、西班牙语、波斯语、法语、印地语、印尼语、意大利语、日语、韩语、波兰语、葡萄牙语、俄语、斯瓦希里语、泰语、他加禄语、土耳其语、乌尔都语、越南语、中文(简体)和中文(繁体)。


安全数字下载 — 病毒扫描文件交付

店主现在可以将可下载文件(PDF、图片、音频、视频、EPUB)上传到他们的数字产品中。买家付款后,文件会出现在商店的”我的下载”部分。

多层安全(纵深防御)

在构建此功能时,安全是我们的首要任务。我们实施了九层保护,以确保没有恶意软件能够接触到我们的玩家:

#层级作用
1文件类型白名单仅接受安全的文档/媒体类型:PDF、PNG、JPG、GIF、WebP、TXT、Markdown、MP3、MP4、WebM、OGG、EPUB。不接受可执行文件、脚本或可能包含脚本的归档文件。
2魔数验证文件的实际内容必须与其扩展名匹配。名为 photo.png 的文件必须确实以 PNG 魔数开头。将 malware.exe 重命名为 malware.pdf 是行不通的。
350 MB 大小限制上传大小的硬性上限可防止通过大文件进行拒绝服务攻击。
4ClamAV 病毒扫描每个文件都由 ClamAV(作为 Docker sidecar 运行)使用 INSTREAM 协议扫描。如果 ClamAV 检测到威胁,上传将被拒绝。如果生产环境中 ClamAV 无法访问,上传也会被拒绝——我们绝不存储未扫描的文件。
5SHA-256 哈希每个存储的文件都会被哈希,并将哈希值记录在数据库中。这提供了完整性验证和可审计性。
6双重扩展名阻止像 document.pdf.exe 这样的文件会被拒绝。仅允许单一扩展名。
7无直接网络访问下载文件存储在 web 根目录之外。没有直接提供这些文件的 nginx 路径。访问文件的唯一方式是通过经过身份验证的下载处理程序。
8经过身份验证的下载处理程序下载端点会验证请求用户拥有该订单、订单已付款,且下载文件属于该订单中的产品。没有订单,就没有访问权限。
9下载计数每个文件每个订单最多可下载 10 次。如果下载链接以某种方式泄露,这可以防止滥用。

店主如何使用

  1. 在创建或编辑产品时将其标记为**“数字”**
  2. 点击产品上新的**“下载”**按钮
  3. 上传文件(最大 50 MB,仅限允许的类型)
  4. 文件会自动由 ClamAV 扫描
  5. 文件通过扫描后,你会看到绿色的”已扫描”徽章
  6. 显示 SHA-256 哈希以供验证

买家如何使用

  1. 购买数字产品并完成付款
  2. **“我的下载”**部分会出现在你的商店侧边栏中
  3. 点击下载——文件以安全 blob 下载方式提供
  4. 你的下载计数器显示剩余下载次数(每个文件 10 次)

现有的碎片/CTTC 交付怎么办?

现有的碎片和 CTTC 碎片自动交付继续像以前一样正常工作。新的下载系统是店主想要附加到其产品上的任何其他数字文件的额外交付机制。


技术细节

  • 后端:Go game-service 与 PostgreSQL。新表:(买家-卖家消息)和 + (文件元数据和访问授权)。
  • ClamAV:作为 Docker sidecar 容器()与 game-service 一起运行。通过 TCP 使用 INSTREAM 协议通信。
  • SSE:实时通知使用现有的 Server-Sent Events 基础设施。新事件:(发给卖家)、(发给买家)。
  • 前端:原生 JavaScript 与 i18n。25 个语言文件中新增 28 个翻译键。
  • 存储:文件存储在 “——位于 web 根目录之外,仅可通过经过身份验证的 API 访问。

接下来呢?

这些功能目前正在向我们的 MAAS 暂存服务器推出以进行测试。验证完成后,它们将部署到所有生产区域。

如果你是店主,开始考虑你想销售哪些数字产品吧——无论是 PDF、艺术作品、音乐还是视频,商店现在都支持具有企业级恶意软件防护的安全交付。

有反馈?使用新的联系卖家功能联系我们的团队商店!