RedAccess 搜索由 AI 编程工具构建、发布在这些工具自身域名上的应用时,发现超过 5,000 个几乎没有任何安全措施或身份验证。它向 Wired 提供的截图中,有一家零售商聊天机器人与客户对话的完整记录,包括全名和联系方式。Wired 无法确认所查数据是否真实。但这些应用确实是开放的。
工具一旦连接 Salesforce、HubSpot、Pipedrive 或 Zoho,客户数据的泄露范围可能远超设计出来的页面。销售管道跟踪器只显示一屏客户账户,保存的密钥却可能打开更多数据。因此,在把链接交给团队之前,先检查密钥的访问范围。
TL;DR(太长不看版)
- CRM 凭据决定泄露规模。为工具分配独立且权限狭窄的 CRM 凭据;如果访问权限绑定用户,就使用专门的低权限用户。将凭据保存在服务器环境设置或机密存储中,仅允许服务器端代码使用。
- 每一种泄露客户记录、销售管道或价格的部署错误,都有可复制粘贴提示词来修复。让原来的 AI 编程工具修改,再由你亲自运行简短测试,确认修改生效。
- 工具运行在哪里,取决于它对 CRM 做什么。只读工具可运行在团队控制的服务器上,通过专用网络或公司登录访问。写回 CRM 的工具必须先交给 IT 或 CRM 管理员。
- GDPR 和 CCPA 适用时,会覆盖工具内的客户数据副本以及所有接收数据的服务。大多数销售和支持工具不属于欧盟《人工智能法案》的高风险用途。主要客户相关例外是个人信贷决定、人寿或健康保险的风险评估或定价,以及从客户面部或声音推断情绪的 AI。
泄露的 CRM 密钥能访问什么

暴露的 CRM API 密钥能访问其用户或应用有权访问的一切,而不只是仪表盘内容。在 Salesforce 和 Pipedrive 中,管理员账户的密钥可以读取、通常也能修改该管理员看到的所有联系人、账户和交易。HubSpot 和 Zoho 密钥携带授予的权限范围;Zoho 组范围覆盖该用户能执行的所有操作。
下面列出四种 CRM 如何授予这些权限,以及如何缩小范围。表中的 scope 指凭据获准执行的操作清单。
| CRM | 凭据及其携带的访问权限 | 宽权限能打开什么 | 更窄的配置 |
|---|---|---|---|
| Salesforce | 通过 connected app 或 external client app 建立 OAuth 连接,以一名 Salesforce 用户身份操作 | 使用 full 可访问用户有权访问的全部数据;使用 api 可通过 REST API 和 Bulk API 2.0 访问其账户 |
专用用户只获准访问工具读取的对象;请求 api,而非 full |
| HubSpot | 新建账户内集成使用 Service Key,或使用现有旧版私有应用令牌 | 所有勾选权限,例如读写联系人、公司和交易 | 仅为显示的对象授予 crm.objects.contacts.read 等只读范围;关闭 sensitive 和 highly_sensitive |
| Pipedrive | 个人 API 令牌,“绑定特定用户和公司,可访问该用户的全部数据” | 该用户能看到的一切 | 由专用 Pipedrive 用户签发的令牌,该用户只能看到工具所需数据 |
| Zoho CRM | 权限范围遵循 service_name.scope_name.operation_type 的 OAuth 令牌 |
使用 ZohoCRM.modules.ALL 等组范围,可对潜在客户、联系人、账户、交易、报价、价目表、销售订单和发票执行读取、创建、更新和删除 |
逐模块只读范围,例如 ZohoCRM.modules.contacts.READ |
每行使用供应商自己的术语。Salesforce 权限范围参考补充说明,full“涵盖所有其他范围”。HubSpot 已将私有应用视为旧版方案,并建议新的系统间集成使用 Service Keys;现有旧版私有应用仍使用原来的权限范围参考,包括 Enterprise 账户的敏感数据范围。
Pipedrive 的表述来自其身份验证文档。Zoho 权限范围文档称,组范围提供“用户能够对记录执行的所有功能的完整访问”。其示例请求本身就申请 ZohoCRM.modules.ALL。
四者的共同原则相同:凭据携带用户权限或授予的范围。因此,为工具创建独立集成凭据,并尽可能缩小权限。访问与用户绑定时,应使用专用低权限用户,而非某个人的管理员账户。
只有工具确实需要写入时才授予写权限,此时应交由 IT 负责。切勿使用自己的管理员登录或个人令牌。
将旧版凭据绑定到个人,还可能在其离职时使集成失效。HubSpot 的旧版私有应用概述称,移除最初创建应用的用户后,部分使用该令牌的 API 调用会失败。Service Keys 属于账户而非员工,可避免这一问题。Pipedrive 每位用户只允许一个有效 API 令牌;更换会停止所有使用它的集成。
能打开联系人的宽权限凭据,通常也能打开交易和预测,Zoho 中还包括报价和价目表。任何持有者都能接触价格和折扣结构。
在 CRM 管理界面创建集成凭据并限制权限范围,或请 CRM 管理员操作。
泄露客户记录的部署错误及其修复
七种默认设置会泄露 AI 销售工具中的客户数据:CRM 密钥在代码或浏览器中、公开链接、每位销售都看见全部账户、无用字段、记录发往外部、没有导出日志,以及删除请求后仍保留的副本。它们都让演示更简单。
| 错误 | 泄露内容 | 修复 |
|---|---|---|
| CRM 密钥位于代码、浏览器或聊天中 | 密钥可访问的一切;宽权限时是整个客户数据库,包括联系人、交易和备注,往往还可修改 | 仅在服务器保存狭窄的集成凭据,并停用旧密钥 |
| 工具发布在公开链接上 | 客户联系方式(邮箱、电话、地址、购买记录)及价格和折扣页面,任何知道地址的人都可访问,包括竞争对手 | 前置专用网络或公司登录 |
| 每位销售看见所有账户 | 整个销售管道、预测和交易金额;离职销售可导出全部客户资源 | 按 CRM 记录所有者设置角色,并在服务器对查看、搜索和导出执行检查 |
| 只需少数字段却获取全部字段 | 仅用于续约日期的工具也取得购买记录、付款状态、账户价值及详细支持工单 | 只获取明确列出的字段 |
| 客户记录发往 AI API 和其他服务 | 数据、细分群体、潜在客户或客户健康评分被复制给无合同供应商 | 审计外发数据、减少字段,并为保留的处理签约 |
| 没有谁导出什么的日志 | 客户列表或群体离开公司,却无法知道何时或由谁导出 | 应用无法更改的导出日志 |
| 工具保留自己的记录副本 | CRM 删除未覆盖工具副本、导出文件和派生评分 | 尽量少存,并让副本跟随 CRM |
构建应用的 AI 编程工具能按要求执行大部分修复。把下面每个提示词按自己的 CRM、对象和角色调整。
AI 声称已修改的报告不构成证明。每条提示词下的测试才是证据。将提示用于代码,切勿把有效密钥或真实客户记录粘贴到聊天中。
从代码、浏览器和聊天中移除 CRM 密钥
粘贴到代码或聊天里的密钥已经暴露。环境变量也一样:它是服务器启动时交给应用、让代码按名称引用而不含真实值的变量;如果使用它的代码在浏览器运行,密钥仍然暴露。浏览器能读取的密钥,任何访客都能复制。
Vite 文档称,前缀为 VITE_ 的变量“会暴露在客户端源代码中”。Next.js 环境变量文档说明,NEXT_PUBLIC_ 同样把值打包进浏览器下载的文件。
写入已提交文件的密钥会留在历史中,就像硬编码在 Compose 文件中的机密会比容器活得更久。私有仓库不是避难所。GitGuardian 2026 年机密报告发现,内部仓库含硬编码机密的可能性约为公开仓库的六倍。约 28% 的事件完全起于仓库之外,例如 Slack、Jira 和 Confluence。
查找本项目中 Salesforce、HubSpot、Pipedrive、Zoho 或其他 CRM 与销售工具的所有 API 密钥、令牌、密码和连接字符串。检查代码、所有 .env 文件和提交历史。
逐项列出:
- 出现的文件和行号
- 直接写在代码中,还是从环境变量读取
- 使用它的代码在服务器还是浏览器运行;标记 VITE_ 或 NEXT_PUBLIC_ 开头的变量
不要输出完整密钥值,只显示各自前四个字符。
然后把全部 CRM 调用移到服务器代码,从仅限服务器的环境变量读取密钥。移除代码中的密钥,排除含真实值的文件,并准确报告修改。不确定时明确说明,不要猜测。
注意:删除聊天消息或提交不会让密钥重新保密。粘贴或提交后,唯一修复是到 CRM 中停用它。
轮换密钥,即签发新密钥并关闭旧密钥,是人工步骤。在 CRM 创建狭窄凭据,请 IT 帮忙放入服务器环境,再关闭旧密钥。
HubSpot 对受损私有应用令牌提供 Rotate and expire now。更换 Pipedrive 令牌前,检查还有哪些集成在用。
供人使用的 CRM 管理员密码应存入密码管理器,例如 Vaultwarden,一款兼容 Bitwarden 的服务器。它服务于人员登录。应用机密的集中轮换可考虑 HashiCorp Vault。
测试:打开工具和浏览器开发者工具,在所有已加载文件中搜索新密钥前八个字符(Ctrl+Shift+F,Mac 为 Cmd+Option+F),应无结果。再触发 CRM 操作并查看网络标签页。凭据不得出现在请求 URL、标头或正文中。请管理员确认旧密钥被拒绝,或在集成设置检查状态。
撤下公开链接
AI 工具托管应用时,发布会放到供应商域名上。RedAccess 通过这些域名上的简单 Google 和 Bing 搜索找到应用。价格页或折扣计算器对竞争对手和销售同样可读。
Lovable 对 Wired 的声明将配置责任交给构建者,这有道理。平台“提供安全构建工具,但应用如何配置最终由创建者负责”。发布设置要由你修改。
列出全部页面、API 路由、文件下载和导出。逐项说明:
- 能否不登录就打开
- 是否返回客户、交易或价格数据
标记所有向未登录请求返回数据的路由。先不要修改,我要先看清单。
测试:手机使用移动数据、退出专用网络,在无痕窗口打开地址。应无法加载,或停在公司登录。以同样方式逐个测试数据路由,不应返回任何数据。
每位销售只看自己的账户
没有角色时,所有人看见全部管道、交易金额和折扣,还能在离职前导出整个客户资源。应按 CRM 记录所有者设置服务器检查的角色,搜索和导出遵循同一规则。
添加三个角色,每个请求都在服务器检查。隐藏按钮、菜单或列不算检查。
- 管理员,即工具所有者与销售运营:全部记录。
- 经理:所属团队成员拥有的记录。
- 销售或客户经理:CRM 所有者字段中自己为所有者的记录。
从已登录账户获取身份和角色,绝不采用用户能在页面输入或修改的值。搜索、列表、导出和 API 响应遵循同一规则,其他请求返回“拒绝访问”(403)。
完成后报告每个页面和路由的角色检查,并标记不确定处。
注意:隐藏菜单或列不是权限检查。服务器不检查,数据仍只隔一个请求。
角色名和团队定义可自行调整。有些团队在预测会议时允许经理查看所有地区。
测试:创建测试销售,搜索已知属于其他地区的账户,应无结果。导出列表只应含测试销售的账户。再以测试经理搜索团队外账户。
只获取必需的客户字段
续约工具需要日期、所有者和账户名。“所有账户数据”还会带来购买记录、付款状态和工单文本。字段越少,可泄露的数据、删除地点和外发信息就越少。
列出数据库、代码、页面、导出和 API 中可能包含个人或商业数据的字段:姓名、邮箱、电话、地址、公司、职位、购买记录、账户价值、付款状态、交易金额、折扣、潜在客户或健康评分、工单内容及唯一标识。
逐项说明使用它的页面或功能,以及主用途是否需要。标记不确定之处,不要猜。
修改 CRM 查询,只请求以下字段:[你批准的字段]。从存储副本、页面和导出删除其他字段,并准确报告变化。
集成凭据的权限范围是第二道锁。无法读取的数据,不会因 AI 代码错误而泄露。数据库是否加密存储应问 IT,读代码的助手无法可靠判断。
测试:以管理员导出,与批准字段清单对照,不得有多余列。检查所有页面,确认字段消失。保留清单供下一项测试。
查看哪些客户数据离开工具
把账户备注发给 AI API、字段发给分析脚本或触发 webhook 的流失计算器,会把记录复制出去。GDPR 适用时,代表公司处理数据的外部服务是处理者,需要下文所述合同。
审计全部外部调用:OpenAI、Anthropic 或其他 AI API、CRM、邮件、聊天、分析及每个 webhook。
逐项列出正文或地址里发送的客户或商业字段。标记可能保存、记录或用于训练的服务,并说明哪些调用可减少字段或不发客户数据。
测试:在各接收服务中打开已接收字段或属性列表,例如分析的用户属性或 webhook 映射,与批准清单比较。清单外仍在外发。没有列表时,把服务名和处理条款交给 DPO 或隐私负责人。
记录每次导出和批量下载
导出按钮一键送走客户列表或价目表;没日志就不知道谁拿了什么。记录每次页面查看会淹没这类信号。应记录导出、批量查看和删除。
添加日志,记录所有导出、下载、返回超过[你选择的数量]条记录的查看和删除。保存用户、操作、记录或群体、行数和时间。
应用数据库账户可添加日志行,但不能修改或删除,只有管理员能读。说明实施的数据库权限和无法在数据库层强制的部分。
不可更改应由数据库账户权限保证,而非应用守规矩;该账户与其他账户一样可限制。日志本身也是个人数据,因为显示谁拿了谁的记录,所以只限管理员读取。
测试:测试销售导出小列表,管理员找到正确行数的日志。请 IT 或展示输出的 AI 工具尝试用应用数据库账户删除该行,应出现权限错误。
客户请求删除时,让副本跟随 CRM
CRM 是主记录系统时先在那里处理。缓存、磁盘导出和客户评分等工具副本是第二个存放点,CRM 删除不会覆盖。
一键删除客户全部内容的按钮,如果任何人都能按,本身就危险。我的看法是尽量少留副本,让删除少追踪一些地点。
修改应用,按需读取 CRM,只保存[批准清单中必须保存的字段]。
列出剩余存放点:数据库表、缓存、导出文件、派生评分和日志。
添加仅限管理员的删除工具。输入 CRM 记录 ID 后显示所有存放点;管理员确认后全部删除,包括评分和存储的导出。仅记录 ID、时间、确认人和清理地点。非管理员收到“拒绝访问”。
DPO 或隐私负责人决定必须保留的例外,所以提示词不处理这些例外。
测试:创建测试联系人,让工具获取;如果工具会生成评分或导出,也要生成。在 CRM 中删除联系人,再以管理员运行删除工具,确认记录从列出的每个地点消失。然后以测试销售身份打开删除工具,应收到“拒绝访问”。
CRM 连接工具应运行在哪里

运行地点取决于 CRM 操作。只读工具可在团队服务器,通过专用网络或公司登录访问。写入工具在任何人使用前先交 IT 或 CRM 管理员。
| 对 CRM 执行的操作 | 运行地点 | 上线前谁批准 |
|---|---|---|
| 使用示例或合成记录,即结构逼真的虚构数据 | AI 工具托管,用于开发和演示 | 暂不需批准;不放真实记录 |
| 为小型固定团队读取真实客户记录 | 团队控制的服务器,仅通过 Tailscale 或 WireGuard 等专用网络访问 | 签发或批准只读凭据的 CRM 管理员 |
| 为分散或出差销售读取真实记录 | 同一服务器,前置 Authentik 或 Keycloak 等身份提供商的公司登录 | CRM 管理员加负责登录连接的 IT |
| 写回阶段、所有者、字段及批量修改 | 在 CRM 沙箱或测试账户开发测试,接触生产前审核 | 上线前由 IT 或 CRM 管理员批准 |
| 决定个人信贷、寿险或健康险风险与价格,或从脸和声音推断情绪 | 审核前不运行 | IT 与法务、DPO 或隐私负责人 |
用示例记录开发测试,直到工具在团队服务器运行。提供登录、机密和日志的托管平台,对已有预算和供应商审查的团队是合理选择。
专用网络意味着工具不回应公共互联网。单点登录让销售使用原有公司账户,由身份提供商验证。AI 写的登录页仍从任何地方可达,安全性取决于代码。
Georgia Tech 的 Vibe Security Radar扫描公开漏洞库,标记追溯到 AI 编程工具签名的缺陷。2026 年 3 月就有 35 例,超过整个 2025 年,类型包括身份验证绕过。数据截至 Georgia Tech 2026 年 4 月文章。
研究人员 Hanqing Zhao 说:“代理构建没有身份验证的东西,不是笔误,而是从一开始就内置的设计缺陷。”我的理解是锁应置于工具之前、AI 代码之外。
让 IT 协助服务器部分。工具在团队完全控制的租用 VPS 上运行,由 Coolify 或 Dokploy 等部署工具启动代码、保存环境变量,包括 CRM 密钥。
Tailscale 设置更快,但使用自己的协调服务器。开源替代 Headscale允许自建这个服务器;WireGuard 完全自托管。
公司登录方面,Authentik 适合大多数小型内部应用栈;Keycloak 适合已有目录的公司。Caddy 或 Nginx Proxy Manager 等反向代理为面向网络的登录添加 HTTPS。无论如何,都应指定一人负责服务器和凭据。
还需要服务器。我们的 Linux VPS提供 root,Coolify、Tailscale、WireGuard、Authentik 和 Keycloak 可一键部署,让 IT 把时间用于测试。地点包括欧盟的法兰克福和阿姆斯特丹、英国伦敦和美国多座城市。把地点选择作为因素交给 DPO 或隐私负责人。
客户数据的 GDPR、CCPA 和欧盟《人工智能法案》要求
服务器地点决定其副本的位置,不决定外部服务如何存储接收的数据,也不单独确保合规。英国对应法律是 UK GDPR,监管机构为 ICO。
GDPR:法律依据、处理者和删除
GDPR 适用于公司时,工具副本与其他“全部或部分自动化处理”的个人数据一样受管辖。
每次使用个人数据都要有认可的法律依据。为履行与当事人的合同或按其请求采取合同前措施所必需时,可依据合同。CRM 尤其 B2B 联系人可能更适合合法利益,但须权衡个人权利。两者都在第 6 条。
工具是对现有数据的新用途,应问 DPO、隐私或法律顾问是否被原有依据覆盖。
代表公司处理数据的外部服务是该处理的处理者。AI API、分析和托管通常如此,但应逐一由隐私或法律人员确认。第 28 条要求处理者提供“充分保障”,并为各项处理签订合同。带上外发数据审计清单。
第 17 条删除权适用时,覆盖公司所有副本,包括工具。因此副本要跟随 CRM。
CCPA:删除权覆盖工具副本
加州消费者可要求受管辖企业删除收集的个人信息,包括工具副本和导出。依据加州总检察长 CCPA 页面,Civil Code 1798.105(d) 和 1798.145 有例外。
CCPA 还要求与服务提供商和承包商签书面合同,限制信息用途。企业继续处理消费者请求,相关方在规定时协助。是否受管辖由 FAQ 中的门槛决定。
欧盟《人工智能法案》:多数销售和支持工具不是高风险
潜在客户评分、销售预测、客户健康分、活动面板及 CRM 自动化不在附件三的高风险用途清单。例外限于个人信用评估、人寿或健康险风险与价格,以及从生物特征推断客户情绪。
高风险是义务最重的类别。截至 2026 年 10 月,附件三规则计划于 2027 年 12 月 2 日适用,第 50 条透明度要求已生效。欧盟《人工智能法案》附件三第 5(b) 项列出“评估自然人信用能力或确定信用评分的系统,但用于检测金融欺诈的 AI 除外”。
第 5(c) 项列出“在人寿和健康保险中针对自然人的风险评估和定价”。这类工具可能高风险,上线前要交 IT 和法务。评价自家销售表现的工具可能涉及第 4(b) 项就业类别,应另交人力和法务。
第 1(c) 项包含情绪识别,第 3 条定义为“根据生物特征数据识别或推断自然人的情绪或意图”。从声音或脸判断情绪的支持或通话工具也可能高风险,走同一 IT 和法务流程。
法案监管 AI 系统。普通代码仪表盘不会因为 AI 写了代码就变成 AI 系统。关键是部署的工具本身是否符合定义。
不是高风险并非没有规则。第 50 条要求“直接与自然人交互”的系统告知是 AI,除非显而易见。客户聊天机器人仍要说明身份。
此外,第 4 条已要求提供者和部署者采取措施,提高员工及代表其使用系统者的 AI 素养。
常见问题
用 ChatGPT 或 Claude 构建 CRM 工具安全吗?
用示例数据开发是低风险部分。风险始于有效凭据或客户数据进入项目,向他人开放后更高。开放前,为工具提供服务器环境或机密存储中的狭窄 CRM 凭据,只供服务器代码使用;再放到专用网络或公司登录后。两者完成前只用示例。
GDPR 是否覆盖客户看不到的内部仪表盘?
公司适用 GDPR 时,存客户个人数据的内部面板没有例外。规则针对处理而非观看者。第 4 条将个人数据定义为“与已识别或可识别自然人有关的任何信息”。适用性及原法律依据的覆盖范围,由 DPO、隐私或法律顾问确定。
交易金额和折扣是个人数据吗?
通常不是。销售金额、预测和价目表是公司数据,由角色和导出日志保护。但如果关联可识别个人,例如消费者购买或个体经营者,按第 4 条也可能属于个人数据。
CCPA 适用于哪些企业?
在加州经营并达到至少一个门槛的营利企业。California Privacy Protection Agency给出的 2025 年通胀调整收入门槛是 26,625,000 美元。总检察长页面还有两项:买卖或共享至少 100,000 名加州居民或家庭的个人信息,或年度收入至少 50% 来自出售或共享消费者个人信息。DPO、隐私或法律顾问确认你的企业是否符合。
讨论
评论
登录后参与讨论。