安全与依据
安全联系人
support@salewise.co.uk请附上复现步骤。请不要访问其他商家的数据或中断服务。
当前状况
- 尚未取得 SOC 2 或 ISO 27001 认证。
- 尚未进行独立渗透测试。
- 不持有银行卡数据。
简要版
四项声明,以及证据所在。
不是营销形容词。而是有代码支撑的设计决策。
从架构上建立依据
模型选择。服务器呈现。
检索先于生成。模型从候选中选择;服务器负责计算和呈现。
01
检索优先
在向模型提出任何问题之前,服务器先从商家目录中检索候选商品。模型从不搜索开放网络。
02
模型选择,服务器呈现。
价格、库存、规格变体和优惠均由服务器根据目录记录呈现。模型文字中的数字绝不是事实来源。
03
ID 经过验证
模型选择的每个商品都必须存在于检索到的候选集中。无效 ID 会在答案送达顾客之前被丢弃。
04
诚实拒绝
如果目录中没有答案,助手会如实说明并提供人工转接。未配置模型或模型不可用时,助手会说明自己无法回答;顾客可以重试或询问店员。
传给模型的内容
- 顾客的问题。
- 一组检索到的商品目录候选。
- 门店设置和相关政策文本。
绝不传给模型的内容
- 银行卡数据或支付凭据。
- 密码、API 密钥或 Salewise 主密钥。
- 任何可以写入 POS 的工具。
控制清单
一份控制清单,不是信任徽章。
每一行都列明控制项、背后的机制以及边界在哪里。如果问卷需要更多细节,请提问。
有依据的回答
商品目录是事实来源。
- 服务器在模型运行之前检索候选商品。模型只能从该集合中选择 ID。无效 ID 会被丢弃,价格、库存、规格变体和优惠由服务器呈现。如果商品目录没有答案,助手会如实说明并提供转接。
静态凭据保护
密钥经过加密、绑定和版本管理。
- 服务商凭据使用 AES-256-GCM,每条记录采用随机 96 位 IV。附加认证数据将密文绑定到 provider:{providerId}:account:{accountId}:credentials,因此复制到其他租户的记录将无法解密。keyVersion 支持密钥轮换;解密失败即关闭,而不是返回密钥。
Salewise 请求
签名认证,而非仅 bearer。
- 发往 Salewise 主 API 的请求携带 HMAC-SHA256 签名,覆盖方法、路径、时间戳、nonce 以及请求体的 SHA-256。签名以恒定时间比较,并受重放窗口限制。主密钥位于服务端,仅配置一次,静态加密,绝不返回浏览器。
账户与角色
商家账户不是服务器管理员。
- Sage 设有商家和服务器管理员角色。密码使用 scrypt 和每账户独立盐值。访问令牌在 15 分钟后过期;刷新令牌以哈希形式存储,使用时轮换,并在 30 天后过期。邀请在 7 天后过期,并绑定到受邀邮箱。
租户隔离
每次门店查询都是一次所有权检查。
- 每条门店路由都会解析门店,并在返回数据之前检查它是否属于已认证账户。仓储方法按账户和门店限定范围,SQL 位于仓储层之后,而不是写在路由处理函数中。
银行卡数据
无支付,无 PAN。
- Salewise 不收取付款,也不存储银行卡数据。顾客 PWA 没有结账流程,交易留在商家的 POS 内。我们不宣称银行卡支付适用 PCI DSS 范围,因为我们不处理银行卡支付。
保留期限
按配置保留,而非无限期。
- 参考部署将会话记录配置为 180 天,事件记录配置为 365 天,由环境和 DPA 设定。商家特定的保留期限在 DPA 中约定,删除按请求处理。目前我们不宣称已实施定时清理。
审计追踪
安全相关事件留下记录。
- 注册、登录、登录失败、邀请、设置和集成凭据变更都会写入审计日志。审计详情中的邮箱经过哈希处理,而不是以原始形式存储。该日志目前仅供内部使用;尚无面向商家的审计界面。
模型边界
模型只获得最低限度的信息。
- 模型接收顾客的问题、检索到的商品目录候选、门店设置和相关政策文本。它不接收密码、API 凭据或银行卡数据,也没有任何可以写入 POS 的工具。
“已构建”意味着该控制今天已存在于产品中。这不代表每项控制都经过独立审计。缺口列在本页底部。
凭据与请求
静态加密。传输签名。
安全审查人员通常最先询问的两项机制。
静态凭据加密
- 算法
- AES-256-GCM,认证加密。
- IV
- 每条记录 12 个随机字节,绝不重复使用。
- 绑定
- AAD provider:{providerId}:account:{accountId}:credentials。复制的记录将无法解密。
- 轮换
- 每条记录都带 keyVersion;轮换期间接受旧密钥。
- 失败
- 解密失败即关闭。不会用过期密钥重试。
Salewise 请求
主密钥在服务器设置期间配置一次。每个请求都用它签名;签名不是 bearer token。
canonical = method + "\n" + path + "\n" + timestamp + "\n" + nonce + "\n" + sha256(body); signature = HMAC-SHA256(masterKey, canonical);
- 通过 X-Sage-Signature 发送,并带有时间戳和 nonce 标头。
- 以恒定时间比较,并设有重放窗口。
- 主密钥保存在服务端并静态加密。
- 绝不返回浏览器或写入日志。
数据、角色与保留
最少的数据。限定的访问。一份记录。
助手不需要知道顾客是谁,也能回答商品问题。
会话记录
- 会话 ID、二维码以及发起会话的通道。
- 问题、回答和推荐。
- 转接事件和时间戳。
没有姓名、账户或银行卡数据。演示不会将会话关联到具名顾客。
谁可以访问
- 商家账户,范围限定为其关联的门店。
- 服务器管理员,用于设置和服务商配置。
- 门店路由不提供跨商家的门店访问。
邀请绑定到邮箱,并在 7 天后过期。
保留多久
- 会话记录:配置为 180 天。
- 事件记录:配置为 365 天。
- 商家特定条款:在 DPA 中设定。
删除按请求处理。目前我们不宣称已实施定时清理。
审计事件
注册、登录、登录失败、邀请、设置和集成凭据变更都会写入审计日志。审计详情中的邮箱经过哈希处理,而不是以原始形式存储。该日志目前仅供内部使用;我们不把它呈现为面向商家的审计界面。
归因
记录必须经得起审计。
已匹配的销售要么精确,要么建模。商家可以看到是哪一种,以及为什么。
确定性
核销码从会话带到销售。置信度 1.0。建模标记为 false。该销售直接归因。
建模
两小时窗口内、包含推荐商品的同店销售。系统保存置信度分数,上限为 0.92,且该匹配在所有报告中都标注为建模。
精确匹配就是精确的。建模匹配在所有报告中都会标注为建模。订阅费是唯一费用,归因也不作为收入呈现。
诚实的限制
我们不宣称什么。
把缺口说清楚,信任才更容易核查。
如果问卷要求清单上的某项,请直接说明。
我们宁愿失去这笔交易,也不愿绕着问题回答。
- 01
我们目前尚未取得 SOC 2 或 ISO 27001 认证。
- 02
我们目前尚未完成独立渗透测试或安全审计。
- 03
我们不宣称银行卡支付适用 PCI DSS 范围,因为我们不处理银行卡支付。
- 04
在当前产品中,我们不会用某家商家的商品目录或对话训练共享模型。
- 05
没有无风险的 AI 系统。依据机制减少编造;它并不免除商家审阅和转接规则的必要性。
- 06
我们目前不运行定时保留清理;删除是 DPA 下的运营流程。
- 07
我们的审计日志仅供内部使用,未作为面向商家的审计界面开放。
- 08
本页不承诺服务级别;任何可用性承诺均在订单表中约定。
负责任披露
如果你认为发现了漏洞,请联系 support@salewise.co.uk ,并提供足够的复现细节。请不要访问其他商家的数据、中断服务,或在我们有机会回应之前公开披露。