specsfy-specialist-application-security

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Segurança de aplicações

应用程序安全

Quando usar

适用场景

  • Acionar quando a mudança introduz ou toca trust boundary, identidade, entrada externa (upload, URL, query, deserialize) ou dado sensível.
  • Acionar também antes de desenhar uma feature com superfície de ataque nova (novo endpoint público, nova integração, novo tipo de usuário) para fazer threat modeling preventivo.
  • Não acionar como substituto de revisão de credenciais de pipeline/deploy — usar
    $specsfy-specialist-delivery-engineering
    para isso; aqui o foco é a aplicação e seus dados, não a esteira de entrega.
  • Combinar com
    $specsfy-specialist-postgres
    /
    $specsfy-specialist-supabase
    quando o risco envolve modelagem de acesso a dado por linha ou tenant.
  • 当变更引入或涉及trust boundaries、身份、外部输入(上传、URL、查询、反序列化)或敏感数据时触发。
  • 当设计具有新攻击面的功能(新的公共端点、新集成、新用户类型)时,也可提前触发以开展预防性threat modeling。
  • 请勿将其作为部署流水线/凭证审查的替代方案——此类场景请使用
    $specsfy-specialist-delivery-engineering
    ;本技能的重点是应用程序及其数据,而非交付流水线。
  • 当风险涉及按行或租户的数据访问建模时,请结合
    $specsfy-specialist-postgres
    /
    $specsfy-specialist-supabase
    使用。

Fluxo

流程

  1. Mapear ativos, atores, trust boundaries, entradas externas e efeitos (o que muda de estado) antes de pensar em controle.
  2. Definir ameaças plausíveis e seu impacto real antes de escolher controles — não implementar defesa para uma ameaça que não existe no contexto do sistema.
  3. Verificar autenticação, autorização por objeto (não só por rota) e separação de tenants em toda operação que lê ou muta dado.
  4. Validar toda entrada pelo tipo, tamanho e destino esperado; normalizar saída conforme o contexto de renderização; proteger operações mutáveis contra replay e CSRF quando aplicável.
  5. Revisar gestão de secrets, criptografia em trânsito e em repouso, ciclo de vida de sessão, dependências vulneráveis e configuração de produção.
  6. Materializar testes positivos (fluxo autorizado funciona) e negativos (fluxo não autorizado falha) nos boundaries críticos identificados.
  7. Registrar risco residual, owner, sinal de observabilidade associado e plano de resposta — nenhum sistema fica "100% seguro", apenas com risco conhecido e monitorado.
  1. 在考虑控制措施之前,先映射资产、参与者、trust boundaries、外部输入及影响(状态变更内容)。
  2. 在选择控制措施之前,先定义合理的威胁及其实际影响——不要针对系统环境中不存在的威胁实施防御。
  3. 在所有读取或变更数据的操作中,检查身份验证、基于对象的授权(不仅限于路由)以及租户隔离。
  4. 根据预期的类型、大小和目标验证所有输入;根据渲染上下文规范化输出;在适用时保护可变操作免受重放攻击和CSRF攻击。
  5. 审查secrets管理、传输中及静态数据加密、会话生命周期、易受攻击的依赖项以及生产环境配置。
  6. 在已识别的关键边界处落实正向测试(授权流程正常运行)和反向测试(未授权流程执行失败)。
  7. 记录剩余风险、负责人、相关可观测信号及响应计划——没有系统是“100%安全”的,只有已知且受监控的风险。

Padrões

规范

  • Negar por padrão e conceder o menor privilégio necessário para cada identidade e operação.
  • Autorizar no servidor em toda operação e em todo objeto acessado — nunca confiar em uma verificação apenas client-side ou em um ID de objeto vindo do cliente sem revalidar propriedade/tenant.
  • Tratar upload de arquivo, URL fornecida pelo usuário, template renderizado com dado externo, query dinâmica e deserialização de dado externo como entradas hostis por padrão.
  • Não implementar criptografia própria; usar primitivas e bibliotecas estabelecidas. Nunca logar segredo, token, senha ou dado sensível, mesmo em ambiente de debug.
  • Rotacionar credenciais periodicamente e preferir identidade temporária (tokens de curta duração, STS/OIDC) a segredo estático de longa duração.
  • Mitigar abuso com limites por ator e por recurso (rate limit por usuário/ API key/tenant), não apenas por IP — um IP compartilhado (NAT, proxy) penaliza usuários legítimos e um atacante distribuído contorna limite só por IP.
  • Ao corrigir uma vulnerabilidade, corrigir a causa raiz e adicionar teste de regressão, sem divulgar detalhe de exploração além do necessário para quem precisa corrigir ou validar.
  • 默认拒绝,为每个身份和操作授予所需的最小权限。
  • 在所有操作和所有访问的对象上进行服务器端授权——永远不要仅依赖客户端验证,或在未重新验证所有权/租户的情况下信任来自客户端的对象ID。
  • 默认将文件上传、用户提供的URL、包含外部数据的渲染模板、动态查询及外部数据反序列化视为恶意输入。
  • 不要自行实现加密;使用成熟的原语和库。永远不要记录secrets、令牌、密码或敏感数据,即使在调试环境中也不行。
  • 定期轮换凭证,优先使用临时身份(短期令牌、STS/OIDC)而非长期静态secrets。
  • 通过按参与者和资源设置限制(按用户/API密钥/租户的速率限制)来缓解滥用,而不仅仅是按IP——共享IP(NAT、代理)会惩罚合法用户,分布式攻击者可以绕过仅基于IP的限制。
  • 在修复漏洞时,修复根本原因并添加回归测试,除了需要修复或验证的人员外,不要泄露过多漏洞利用细节。

Antipadrões

反模式

  • Verificar autorização apenas pela rota (
    /admin/*
    protegido) sem verificar o objeto específico acessado dentro da rota: um usuário autenticado como tenant A consegue acessar
    /api/orders/123
    de um tenant B só trocando o ID na URL (IDOR — Insecure Direct Object Reference).
  • Validar entrada só no client (JavaScript no navegador) sem revalidar no servidor: qualquer requisição direta à API contorna completamente a validação client-side.
  • Confiar em
    Content-Type
    ou extensão de arquivo declarados pelo cliente para decidir como processar um upload: permite disfarçar um arquivo malicioso como um tipo inofensivo.
  • Guardar segredo de aplicação (chave de API, senha de banco) em variável de ambiente sem controle de acesso ao processo/log, ou logar o payload completo de uma requisição que contém token de autenticação — o segredo vaza por um canal indireto mesmo com o "cofre" correto na origem.
  • Anunciar "sistema seguro" ou "vulnerabilidade corrigida" sem teste negativo específico comprovando que o vetor original não funciona mais.
  • 仅通过路由验证授权(如保护
    /admin/*
    ),而不检查路由内访问的特定对象:租户A的认证用户只需更换URL中的ID,即可访问租户B的
    /api/orders/123
    (IDOR——Insecure Direct Object Reference)。
  • 仅在客户端(浏览器中的JavaScript)验证输入,而不在服务器端重新验证:任何直接向API发起的请求都可以完全绕过客户端验证。
  • 依赖客户端声明的
    Content-Type
    或文件扩展名来决定如何处理上传:允许将恶意文件伪装成无害类型。
  • 在没有进程/日志访问控制的环境变量中存储应用程序secrets(API密钥、数据库密码),或记录包含身份验证令牌的完整请求 payload——即使源头使用了正确的“保险箱”,secrets也会通过间接渠道泄露。
  • 在没有具体反向测试证明原始攻击向量已失效的情况下,宣称“系统安全”或“漏洞已修复”。

Validação

验证

  • Casos de teste negativos: acesso sem autenticação, com identidade errada, com tenant errado e replay de uma requisição já processada — todos devem falhar de forma controlada.
  • Análise de dependências vulneráveis e varredura de secrets vazados com as ferramentas já adotadas pelo projeto, rodada como parte do fluxo normal, não apenas manualmente antes de um release grande.
  • Configuração segura de produção: headers de segurança (ex.:
    Content-Security-Policy
    ,
    Strict-Transport-Security
    ), atributos de cookie (
    HttpOnly
    ,
    Secure
    ,
    SameSite
    ) e política de CORS restrita à origem realmente necessária.
  • Evidência concreta de cada controle reivindicado e do risco residual que permanece — nunca declarar algo "seguro" em linguagem absoluta sem o teste que comprova.
  • 反向测试用例:未认证访问、错误身份访问、错误租户访问以及重放已处理的请求——所有这些都应受控失败。
  • 使用项目已采用的工具进行易受攻击的依赖项分析和泄露secrets扫描,作为常规流程的一部分运行,而不仅仅是在大型发布前手动执行。
  • 生产环境安全配置:安全头(如
    Content-Security-Policy
    Strict-Transport-Security
    )、Cookie属性(
    HttpOnly
    Secure
    SameSite
    )以及严格限制在实际需要的源的CORS策略。
  • 每个声称的控制措施和剩余风险都要有具体证据——永远不要在没有测试证明的情况下用绝对语言宣称某物“安全”。

Skills relacionadas

相关技能

  • $specsfy-specialist-ansible
    e
    $specsfy-specialist-docker
    implementam hardening de host, container e runtime; esta skill define ameaça, privilégio e controle que a configuração precisa provar.
  • $specsfy-specialist-laravel
    ,
    $specsfy-specialist-nextjs
    e
    $specsfy-specialist-shadcn-ui
    implementam superfícies de aplicação; autorização, validação server-side e exposição de dados permanecem aqui.
  • $specsfy-specialist-code-review
    aplica a revisão ampla e
    $specsfy-specialist-observability
    registra sinais de abuso sem vazar dados sensíveis.
  • $specsfy-specialist-postgres
    e
    $specsfy-specialist-supabase
    para modelagem de autorização por linha/tenant no nível de dado (RLS, constraints).
  • $specsfy-specialist-delivery-engineering
    para hardening de credenciais de pipeline, assinatura de artefato e supply chain.
  • $specsfy-specialist-web-api-design
    quando o risco nasce do desenho do contrato de API (verbos, versionamento, exposição de campo sensível).
Leia references/standards.md para checklist de threat modeling por boundary, ASVS, segurança de API e supply chain, com fontes primárias.
  • $specsfy-specialist-ansible
    $specsfy-specialist-docker
    实现主机、容器及运行时的加固;本技能定义了配置需要满足的威胁、权限及控制要求。
  • $specsfy-specialist-laravel
    $specsfy-specialist-nextjs
    $specsfy-specialist-shadcn-ui
    实现应用程序界面;授权、服务器端验证及数据暴露相关内容仍归本技能负责。
  • $specsfy-specialist-code-review
    进行全面审查,
    $specsfy-specialist-observability
    记录滥用信号而不泄露敏感数据。
  • $specsfy-specialist-postgres
    $specsfy-specialist-supabase
    用于在数据层面按行/租户进行授权建模(RLS、约束)。
  • $specsfy-specialist-delivery-engineering
    用于部署流水线凭证加固、工件签名及供应链安全。
  • $specsfy-specialist-web-api-design
    适用于风险源于API契约设计(动词、版本控制、敏感字段暴露)的场景。
阅读references/standards.md获取按边界划分的threat modeling清单、ASVS、API安全及供应链安全相关内容,均来自原始来源。