Recursos · 37
Proteger uma API GraphQL: autorização, custo de consulta e evidências
Impor direitos de objeto e campo, vincular o trabalho do servidor e testar caminhos de negação.
Atualizado · 2 min
O que este guia ajuda a alcançar
- Mapear o esquema exposto
- Exercitar permissões
- Custo da consulta vinculada
- Verificar negações
Verificação rápida
- Uma conta pode ler o objeto de outra conta?
- Um campo sensível segue a decisão de acesso de seu pai?
- Qual o custo combinado de profundidade, aliases e paginação?
- Quais detalhes vazam por meio de erros?
- Quem observa negações e abusos?
Método passo a passo
- 1
Inventariar operações
Listar tipos, campos, mutações, funções, proprietários de objetos e dados sensíveis. Incluir consultas atuais do cliente e caminhos raramente usados.
Entregável: matriz de operação, função, objeto e campo.
- 2
Testar cada decisão de acesso
Criar contas de teste distintas e trocar IDs de objeto, incluindo objetos aninhados. Os resolvedores devem impor autorização antes de retornar dados.
Entregável: casos reproduzíveis de permissão e negação.
- 3
Trabalho de servidor vinculado
Medir o custo real de campos e coleções. Testar profundidade, abrangência, aliases, paginação, processamento em lote e tempo em conjunto e, em seguida, definir limites adequados.
Entregável: política de custo e conjunto de consultas adversárias.
- 4
Reduzir a exposição desnecessária
Decidir sobre a introspecção para o contexto, ocultar detalhes de erros internos e remover campos que revelem mais do que os clientes precisam.
Entregável: configuração pública revisada e respostas a erros.
- 5
Observar com moderação
Registrar identidade técnica útil, operação, custo, negação e correlação, excluindo segredos e argumentos sensíveis. Atribuir a responsabilidade pelo alerta.
Entregável: painel e procedimento de investigação.
- 6
Reproduzir após alteração
Quando um campo, função ou cliente for alterado, repetir os casos de autorização e carregamento. Verificar consultas antigas que agora percorrem o grafo revisado.
Entregável: resultado da regressão e decisão de lançamento.
Indicadores de gestão
| Indicador | O que mede | Primeira ação |
|---|---|---|
| Acesso | Casos de objeto e campo negados conforme o esperado | Corrigir o resolvedor |
| Custo | Consultas complexas contidas pela política | Ajustar campos e limites |
| Erros | Respostas públicas sem detalhes internos | Reduzir detalhes expostos |
| Regressão | Operações do cliente reproduzidas após alteração | Bloquear quebras não intencionais |
Erros comuns
- Confiar apenas no acesso ao endpoint
- Limitar a profundidade, mas ignorar a amplitude
- Esquecer a autorização de campos aninhados
- Registrar argumentos com dados sensíveis
Perguntas frequentes
O GraphQL remove a autorização de API comum?
Não. Cada acesso a objeto e campo ainda precisa de uma decisão baseada em identidade e contexto.
Desativar a introspecção é suficiente?
Não. Pode reduzir a exposição do esquema, mas não corrige o custo de acesso ou de consulta.
Um limite de profundidade é suficiente?
Não. Aliases, amplitude, listas e custo específico do campo também importam.
Referências oficiais
As referências apoiam o método. Adapte as verificações ao seu contexto; elas não são uma certificação. Os títulos das referências originais e os documentos de origem podem estar em outro idioma.






