api-security-best-practices
Ajuda seu agente a tornar APIs mais seguras. Ele implementa proteções contra acessos não autorizados e ataques comuns.
O que ela faz
Esta ferramenta ajuda a tornar suas APIs (as 'portas' que seus programas usam para conversar entre si) mais seguras. Ela verifica se apenas pessoas autorizadas podem acessar informações e se os dados enviados estão corretos, prevenindo ataques comuns.
Quando usar
- ✓Ao criar uma nova função protegida em sua API.
- ✓Ao revisar quem pode acessar quais dados.
- ✓Ao investigar um uso indevido da sua API.
Exemplo do que pedir para a IA
“Revise a segurança desta nova rota de API para garantir que apenas usuários autenticados possam acessá-la e que os dados enviados sejam válidos.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta analisa como sua API verifica quem está enviando a solicitação (autenticação) e se essa pessoa tem permissão para fazer o que está pedindo (autorização). Ela também verifica se os dados recebidos são seguros e esperados.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill api-security-best-practicesOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/api-security-best-practices/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Melhores Práticas de Segurança de API
Revise o limite da requisição desde a identidade do chamador até a autorização, entrada validada, armazenamento e resposta observável. Preserve o provedor de identidade e o modelo de dados reais da aplicação em vez de introduzir um segundo sistema de autenticação.
Quando Usar
Use ao adicionar um endpoint protegido, revisar o acesso a objetos, substituir a análise permissiva de requisições ou investigar um caminho de abuso de API. Para um defeito concreto, comece com a rota que falha e seus chamadores; não implante infraestrutura de segurança não relacionada.
Entradas e pré-requisitos
Registre as rotas, o modelo de chamador/inquilino, o provedor de identidade, o contrato de token, as versões de tempo de execução e de dependências bloqueadas, o esquema do banco de dados, a topologia do proxy e o escopo de teste autorizado. Use identidades sintéticas em um ambiente de teste. A autorização de tarefa existente é transferida; verificações de produção, gravações de conta e envios de mensagens precisam de sua própria autoridade. Os exemplos de Node abaixo são esboços de integração para Express, jsonwebtoken e Zod; adaptadores de aplicação/banco de dados são deliberadamente nomeados em vez de apresentados como um serviço completo executável. Confirme as APIs contra as versões instaladas antes de integrar.
1. Autentique o contrato de token exato
Prefira o middleware de provedor/sessão estabelecido. Quando o serviço possui um contrato JWT HMAC, exija uma chave forte de propriedade do servidor, um algoritmo fixo, emissor e público exatos, e declarações de tempo de execução obrigatórias. Não infira permissões de um token decodificado antes da verificação da assinatura. Nunca aceite um algoritmo de verificação selecionado pelo chamador.
const jwt = require('jsonwebtoken');
// Illustrative first-party access-token contract; not a third-party OAuth adapter.
const ACCESS_POLICY = {
algorithms: ['HS256'], issuer: 'example-auth', audience: 'example-api'
};
function verifyAccessToken(token, signingKey) {
const claims = jwt.verify(token, signingKey, ACCESS_POLICY);
if (!claims || typeof claims !== 'object' ||
typeof claims.sub !== 'string' || !claims.sub ||
typeof claims.tenantId !== 'string' || !claims.tenantId ||
!Number.isSafeInteger(claims.exp) || !Number.isSafeInteger(claims.iat) ||
claims.exp <= claims.iat) {
throw new Error('Invalid access claims');
}
return { subject: claims.sub, tenantId: claims.tenantId };
}
function readBearer(header) {
if (typeof header !== 'string' || header.length > 8192) return null;
const match = /^Bearer ([A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+)$/i.exec(header);
return match ? match[1] : null;
}
Emita tokens de acesso com o mesmo emissor/público/algoritmo e uma curta expiração aprovada pela aplicação. Trate a falha de verificação como um 401 genérico sem ecoar o token ou a exceção. A expiração por si só não revoga um token; defina a revogação ou sessões de curta duração de acordo com o modelo de ameaça real. Um serviço que usa chaves de provedor assimétricas precisa da validação de descoberta/JWKS do provedor e da política de rotação de chaves, não deste exemplo HMAC. Nunca reutilize um token de acesso como um token de atualização.
Atualize sessões
Use o fluxo de sessão suportado pelo provedor ou um design de atualização opaco do lado do servidor: armazene apenas um resumo, expiração, família de usuário/sessão e estado de revogação. Em uma transação atômica, consuma o token ativo antigo e crie o substituto. A reutilização concorrente não deve emitir dois sucessores; o tratamento de reutilização definido revoga a família afetada. Verifique o status e as permissões do usuário atual ao emitir novos tokens de acesso. Vincule a atualização ao cliente/sessão pretendido e proteja as requisições baseadas em cookie contra CSRF. Não registre tokens, armazene-os em texto plano em um banco de dados ou retorne um token de atualização através de uma URL. Teste atualização simultânea, expiração, repetição, revogação e falha de transação antes de considerar o fluxo completo. Nenhum adaptador de transação de banco de dados está incluído aqui.
2. Autorize o recurso e a operação
A autenticação identifica o chamador; a autorização decide a operação exata em um objeto e inquilino. Um nome de função não concede automaticamente acesso entre inquilinos. Aplique o predicado de proprietário/inquilino na mutação do banco de dados para evitar uma corrida de verificação-depois-escrita e permita propriedades graváveis. Use 404/403 consistentemente com a política de divulgação de recursos do produto.
// Esboço estilo Prisma; os tipos de id e tenant devem corresponder ao seu esquema real.
async function deleteOwnedPost(prisma, postId, principal) {
const result = await prisma.post.deleteMany({
…
Perguntas frequentes
O que é autenticação?
É o processo de verificar se um usuário ou programa é quem diz ser, geralmente usando senhas, tokens ou chaves.
O que é autorização?
É o processo de verificar se um usuário ou programa autenticado tem permissão para realizar uma ação específica ou acessar um recurso.
Por que validar os dados de entrada?
Para garantir que apenas dados seguros e no formato esperado sejam processados, prevenindo erros e ataques que exploram dados malformados.
Detalhes
Descrição original do autor
Implement secure API design patterns including authentication, authorization, input validation, rate limiting, and protection against common API vulnerabilities
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #2165
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
django-security
Ajuda seu agente a implementar práticas de segurança em aplicações Django. Ele foca em autenticação, autorização e prevenção contra ataques comuns, garantindo um código mais seguro.
affaan-m/ECC
laravel-security
Ajuda seu agente a proteger aplicações Laravel contra ameaças. Implementa práticas de segurança para autenticação, autorização e prevenção de ataques comuns.
affaan-m/ECC
module-regression
Ajuda seu agente a gerenciar mudanças em projetos grandes. Garante que alterações em uma parte do código não quebrem outras partes.
affaan-m/ECC