cc-skill-security-review
Garante que todo o código siga as melhores práticas de segurança. Identifica possíveis falhas para proteger o sistema contra ataques e acessos não autorizados.
O que ela faz
Esta ferramenta verifica seu código para garantir que ele siga as melhores práticas de segurança e identifica possíveis pontos fracos. Ela ajuda a proteger seu aplicativo contra ataques.
Quando usar
- ✓Ao implementar sistemas de login e permissão.
- ✓Ao lidar com informações que os usuários enviam.
- ✓Ao criar novas formas de comunicação com outros sistemas.
Exemplo do que pedir para a IA
“Revise meu código para garantir que ele está seguro contra hackers.”
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 seu código em busca de erros comuns de segurança, como senhas expostas ou formas fáceis de invadir. Ela compara seu código com listas de verificação de segurança para encontrar problemas.
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 cc-skill-security-reviewOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/cc-skill-security-review/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.
Habilidade de Revisão de Segurança
Esta habilidade garante que todo o código siga as melhores práticas de segurança e identifica vulnerabilidades potenciais.
Guia Detalhado
Leia o guia detalhado antes de executar esta habilidade. Ele retém o procedimento completo e o material de referência. Trate seus requisitos de segurança, pré-requisitos e validação como obrigatórios. Para trabalho focado, carregue as seções relevantes; para trabalho de ponta a ponta, leia o guia completamente.
Quando Usar
- Implementando autenticação ou autorização
- Lidando com entrada do usuário ou uploads de arquivos
- Criando novos endpoints de API
- Trabalhando com segredos ou credenciais
- Implementando funcionalidades de pagamento
- Armazenando ou transmitindo dados sensíveis
- Integrando APIs de terceiros
Checklist de Segurança
1. Gerenciamento de Segredos
❌ NUNCA Faça Isso
const leakedToken = "[redacted API key]" // Hardcoded secret
const dbCredential = "[redacted password]" // In source code
✅ SEMPRE Faça Isso
const apiKey = process.env.OPENAI_API_KEY
const dbUrl = process.env.DATABASE_URL
// Verify secrets exist
if (!apiKey) {
throw new Error('OPENAI_API_KEY not configured')
}
Passos de Verificação
- Sem chaves de API, tokens ou senhas codificadas diretamente
- Todos os segredos em variáveis de ambiente
-
.env.localem .gitignore - Sem segredos no histórico do git
- Segredos de produção na plataforma de hospedagem (Vercel, Railway)
2. Validação de Entrada
Sempre Valide a Entrada do Usuário
import { z } from 'zod'
// Define validation schema
const CreateUserSchema = z.object({
email: z.string().email(),
name: z.string().min(1).max(100),
age: z.number().int().min(0).max(150)
})
// Validate before processing
export async function createUser(input: unknown) {
try {
const validated = CreateUserSchema.parse(input)
return await db.users.create(validated)
} catch (error) {
if (error instanceof z.ZodError) {
return { success: false, errors: error.errors }
}
throw error
}
}
Validação de Upload de Arquivo
function validateFileUpload(file: File) {
// Size check (5MB max)
const maxSize = 5 * 1024 * 1024
if (file.size > maxSize) {
throw new Error('File too large (max 5MB)')
}
// Type check
const allowedTypes = ['image/jpeg', 'image/png', 'image/gif']
if (!allowedTypes.includes(file.type)) {
throw new Error('Invalid file type')
}
// Extension check
const allowedExtensions = ['.jpg', '.jpeg', '.png', '.gif']
const extension = file.name.toLowerCase().match(/\.[^.]+$/)?.[0]
if (!extension || !allowedExtensions.includes(extension)) {
throw new Error('Invalid file extension')
}
return true
}
Passos de Verificação
- Todas as entradas do usuário validadas com esquemas
- Uploads de arquivos restritos (tamanho, tipo, extensão)
- Sem uso direto da entrada do usuário em consultas
- Validação por lista branca (não lista negra)
- Mensagens de erro não vazam informações sensíveis
3. Prevenção de Injeção de SQL
❌ NUNCA Concatene SQL
// DANGEROUS - SQL Injection vulnerability
const query = `SELECT * FROM users WHERE email = '${userEmail}'`
await db.query(query)
✅ SEMPRE Use Consultas Parametrizadas
// Safe - parameterized query
const { data } = await supabase
.from('users')
.select('*')
.eq('email', userEmail)
// Or with raw SQL
await db.query(
'SELECT * FROM users WHERE email = $1',
[userEmail]
)
Passos de Verificação
- Todas as consultas ao banco de dados usam consultas parametrizadas
- Sem concatenação de strings em SQL
- ORM/construtor de consultas usado corretamente
- Consultas Supabase devidamente sanitizadas
4. Autenticação e Autorização
Tratamento de Token JWT
// ❌ WRONG: localStorage (vulnerable to XSS)
localStorage.setItem('token', token)
// ✅ CORRECT: httpOnly cookies
res.setHeader('Set-Cookie',
`token=${token}; HttpOnly; Secure; SameSite=Strict; Max-Age=3600`)
Verificações de Autorização
export async function deleteUser(userId: string, requesterId: string) {
// ALWAYS verify authorization first
const requester = await db.users.findUnique({
where: { id: requesterId }
})
if (requester.role !== 'admin') {
return NextResponse.json(
{ error: 'Unauthorized' },
{ status: 403 }
)
}
// Proceed with deletion
await db.users.delete({ where: { id: userId } })
}
Segurança em Nível de Linha (Supabase)
-- Habilita RLS em todas as tabelas
ALTER TABLE users ENABLE ROW LEVEL SECURITY;
…
Perguntas frequentes
O que são 'vulnerabilidades'?
São falhas ou fraquezas no código que podem ser exploradas por pessoas mal-intencionadas para acessar informações ou danificar o sistema.
Por que não devo colocar senhas diretamente no código?
Colocar senhas diretamente no código é como deixar a chave de casa embaixo do tapete. Qualquer um que veja o código pode encontrar a senha e acessar seus sistemas.
O que é validação de entrada?
É verificar se as informações que os usuários enviam (como em um formulário) estão corretas e seguras antes de usá-las, para evitar que enviem algo perigoso.
Detalhes
Descrição original do autor
This skill ensures all code follows security best practices and identifies potential vulnerabilities. Use when implementing authentication or authorization, handling user input or file uploads, or creating new API endpoints.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #2503
- 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