SuperAPI AI 工具集

sf-security

安全与审计

查看项目

更新于 10-15 13:51

技能介绍

用途

sf-security 是一个 Salesforce 安全审计技能,扮演 Salesforce 安全专家的角色,专门用于发现那些会导致 AppExchange 安全审查失败的代码漏洞。它面向需要提交 AppExchange 安全审查、或在内部进行 Apex 代码安全合规检查的开发团队。

主要能力

该工具可检测以下类别的安全问题:

  1. 缺少 CRUD/FLS 强制检查:识别未使用 Security.stripInaccessible() 的 DML 操作(insert/update/delete/upsert),以及未使用 AccessLevel.USER_MODE 的 Database.insert/Database.update。
  2. SOQL 缺少 WITH USER_MODE:扫描未带 WITH USER_MODE 的 SOQL 查询。
  3. 缺少 with sharing:检查未显式声明共享模型的类,仅在明确需要时才允许 without sharing 并需记录原因。
  4. SOQL 注入:检测动态 SOQL 中的字符串拼接,推荐使用绑定变量或 String.escapeSingleQuotes。
  5. 调试日志中的 PII/敏感数据:发现可能泄露 SSN、信用卡号等敏感字段的 System.debug 语句。
  6. 硬编码凭据:识别硬编码的 URL、API 密钥、密码、令牌,以及写在字符串字面量中的凭据。
  7. Visualforce 中的跨站脚本(XSS):扫描未转义输出(缺少 JSENCODE/HTMLENCODE/URLENCODE)以及 escape="false" 的 apex:outputText。
  8. FLS Schema API 检查:通过 Schema Describe 在 CRUD 前预检查权限。
  9. 共享模型:涉及组织范围默认值(OWD)、角色层级、共享规则、Apex 托管共享等。
  10. 自定义权限检查:使用 FeatureManagement.checkPermission。
  11. WITH SECURITY_ENFORCED 与 WITH USER_MODE 对比:SECURITY_ENFORCED 在 FLS 违规时抛异常,不强制 WHERE 子句,属旧方案;USER_MODE 静默剥离字段,强制 WHERE 子句,是推荐方案。

使用方式

审计工作流扫描所有 Apex 类(Glob 模式:force-app/**/*.cls),使用 Grep 模式逐文件检查违规,例如:

  • 未声明 with sharing 的类:^public\s+(virtual\s+|abstract\s+|global\s+)?class
  • 缺少 USER_MODE 的 SOQL:[SELECT.FROM.(?!WITH USER_MODE)]
  • 未使用 stripInaccessible 的 DML:(insert|update|delete|upsert)\s+\w+;
  • SOQL 字符串拼接:'SELECT.'\s+
  • 敏感字段调试日志:System.debug.*.(SSN|Password|Secret|Token|CardNumber)

输出格式为结构化的安全审计报告,包含 Critical/High/Medium/Low 分级表格(文件、行号、问题、修复),以及汇总统计和针对 AppExchange 审查的 PASS/FAIL 建议。严重级别分类:Critical 包括 SOQL 注入、DML 缺少 CRUD/FLS、硬编码凭据;High 包括缺少 with sharing、缺少 USER_MODE、Visualforce XSS;Medium 包括调试日志中的 PII、过度宽松的共享;Low 包括缺少空值检查、非批量模式。

该技能还包含注意事项说明(Gotchas),例如:Apex 默认以系统模式运行,除非显式添加否则不强制安全;Security.stripInaccessible() 返回新列表,原列表不变;动态 SOQL 中的字符串拼接即使配合 USER_MODE 也会绕过绑定变量保护等。同时提供 Security Scan 脚本用于快速自动扫描常见 Apex 漏洞。

适用场景

  • 提交 AppExchange 安全审查前的自检;
  • 对 Salesforce 代码库进行安全合规审计;
  • 排查 CRUD/FLS、共享规则、SOQL 注入、PII 泄露类问题。

限制

资料未提供该工具的收费方式、价格、适用平台范围、安装命令及运行环境要求等细节,这些内容暂未提供。