Relatório de Security Scan
Ferramentas de Scan Utilizadas
Seção intitulada “Ferramentas de Scan Utilizadas”| Ferramenta | Versão | Propósito |
|---|---|---|
| Salesforce Code Analyzer v5 | Mais recente | Análise de segurança Apex/LWC |
| PMD (incl. AppExchange rules) | v5 | Qualidade de código & segurança |
| ESLint | v5 | Análise JavaScript/LWC |
| RetireJS | v5 | Bibliotecas JS vulneráveis |
| Partner Security Portal (Checkmarx) | Mais recente | Scan de fonte obrigatório |
Como Gerar Relatórios de Scan
Seção intitulada “Como Gerar Relatórios de Scan”Pré-requisitos
Seção intitulada “Pré-requisitos”# Install Salesforce CLInpm install -g @salesforce/cli
# Install Code Analyzer v5 pluginsf plugins install @salesforce/plugin-code-analyzerExecutar Scan Completo
Seção intitulada “Executar Scan Completo”# Run all rules with HTML outputsf code-analyzer run --workspace force-app --output-file docs/scan-results.html
# Run AppExchange-specific rulessf code-analyzer run --rule-selector AppExchange --workspace force-app --output-file docs/scan-appexchange.html
# Run Security-tagged rules onlysf code-analyzer run --rule-selector Security --workspace force-app --output-file docs/scan-security.html
# Fail on High or Critical (CI/CD)sf code-analyzer run --rule-selector AppExchange --workspace force-app --severity-threshold 2 --output-file docs/scan-appexchange.htmlMelhores Práticas de Segurança Implementadas
Seção intitulada “Melhores Práticas de Segurança Implementadas”Aplicação CRUD/FLS
Seção intitulada “Aplicação CRUD/FLS”- Verificação
isCreateable()antes de INSERT - Verificação
isUpdateable()antes de UPDATE - Verificação
isDeletable()antes de DELETE - Permissões em nível de campo via Permission Sets
Prevenção de Injeção SOQL
Seção intitulada “Prevenção de Injeção SOQL”- Bind variables usadas para entrada de usuário
String.escapeSingleQuotes()para queries dinâmicas- Nomes de objeto derivados de IDs Salesforce (não entrada de usuário)
Conformidade com Sharing Model
Seção intitulada “Conformidade com Sharing Model”with sharingem controllers principaiswithout sharingapenas onde documentado e necessário- Registros de compartilhamento respeitam configurações OWD
Segurança LWC
Seção intitulada “Segurança LWC”- Sem
eval()ou execução de script dinâmico - Entrada de usuário sanitizada antes de exibição
- Sem credenciais codificadas
Segurança de Integração Externa
Seção intitulada “Segurança de Integração Externa”| Verificação | Status | Notas |
|---|---|---|
| HTTP Callouts | N/A | Pacote não faz chamadas externas |
| Named Credentials | N/A | Não usado |
| External Objects | N/A | Não usado |
| Remote Site Settings | N/A | Não necessário |
| CSP Violations | Pass | Sem violações de Content-Security-Policy |
Cobertura de Teste Apex
Seção intitulada “Cobertura de Teste Apex”| Classe | Cobertura | Status |
|---|---|---|
| ObjectTeamMemberController | >75% | Pass |
| TeamMemberWizardController | >75% | Pass |
| ShareRecordQueueable | >75% | Pass |
| SharingRecalculationBatch | >75% | Pass |
| ExpiredTeamMemberCleanupBatch | >75% | Pass |
| ObjectTeamMemberTriggerHandler | >75% | Pass |
| PostInstallHandler | >75% | Pass |
| Geral | >75% | Pass |
Como Executar Testes com Cobertura
Seção intitulada “Como Executar Testes com Cobertura”# Run all tests with coveragesf apex run test --code-coverage --result-format human --target-org [ORG_ALIAS]
# Run specific test classsf apex run test --tests ObjectTeamMemberTest --code-coverage --result-format human --target-org [ORG_ALIAS]Referência de Comandos do Scanner (Code Analyzer v5)
Seção intitulada “Referência de Comandos do Scanner (Code Analyzer v5)”# List available rulessf code-analyzer rules
# List AppExchange rules onlysf code-analyzer rules --rule-selector AppExchange
# Run with specific rule selectorsf code-analyzer run --rule-selector Security --workspace force-app
# Export to various formatssf code-analyzer run --workspace force-app --output-file results.htmlsf code-analyzer run --workspace force-app --output-file results.sarif