You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用without sharing关键字的Apex类开放给Guest User的安全隐患问询

该Apex实现的安全隐患分析

你的这个实现存在多处安全隐患,具体如下:

  • 元数据密钥泄露风险
    你使用了without sharing修饰类,这类类会跳过对象权限检查。虽然bearerToken是私有静态变量,但Guest User可以直接调用makeRestCallout方法,而该方法会使用从元数据中读取的密钥发起外部请求。本质上,任何能访问公开站点的用户都能间接获取到这个密钥——他们可以通过抓包看到请求头里的Authorization字段,或者构造调用触发请求,进而拿到密钥去调用外部API,这会导致外部API的权限被滥用,甚至泄露敏感数据。

  • 无限制的外部调用与资源滥用
    makeRestCallout是公开静态方法且开放给Guest User,意味着任何人都可以无限制触发这个外部API调用。如果外部API有调用配额,很容易被恶意刷量耗尽;同时,每次调用成功后都会把响应体插入到MyCustomObject__c中,如果这个自定义对象没有对Guest User做严格的权限控制,用户还能访问到存储的响应数据,进一步扩大泄露范围。

  • 缺乏调用校验机制
    没有任何针对调用者的验证逻辑,比如调用频率限制、身份校验等。恶意用户可以反复调用这个方法,不仅会消耗外部API的资源,还会给你的Salesforce组织带来不必要的资源开销,甚至触发Salesforce自身的调用次数限制,影响正常业务。

  • 静态变量的潜在风险
    类级别的静态变量metadataRecord和bearerToken会在类加载时初始化并常驻内存,直到类被Salesforce卸载。如果后续代码出现漏洞,比如其他有权限的类能通过反射或内部类访问这些私有变量,就可能直接泄露密钥;另外,元数据中的密钥更新后,静态变量不会自动刷新,可能导致后续调用使用旧密钥,引发功能异常的同时也可能带来安全问题。

内容的提问来源于stack exchange,提问作者nischal vasisth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:32:41