security-review
Ajuda seu agente a tornar aplicativos mais seguros. Ele verifica senhas, dados de usuários e pagamentos para prevenir ataques.
O que ela faz
Esta ferramenta ajuda a verificar se o seu código está seguro, procurando por erros comuns que podem ser explorados por pessoas mal-intencionadas. Ela verifica desde como você guarda senhas até como lida com informações enviadas pelos usuários.
Quando usar
- ✓Ao adicionar login e senha ao seu site.
- ✓Quando seu programa recebe informações digitadas pelo usuário.
- ✓Ao criar um local para receber pagamentos ou lidar com dados sensíveis.
Exemplo do que pedir para a IA
“Revise meu código para garantir que as senhas não estejam expostas e que os dados dos usuários sejam tratados com segurança.”
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 práticas inseguras, como senhas escritas diretamente no código ou falta de validação de dados. Ela sugere as formas corretas de fazer isso, como usar variáveis de ambiente para senhas e validar todas as informações recebidas.
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 affaan-m/ECC --skill security-reviewOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/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.
Quando Ativar
- Implementando autenticação ou autorização
- Lidando com entrada do usuário ou upload 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
FALHA: NUNCA Faça Isso
const apiKey = "sk-proj-xxxxx" // Hardcoded secret
const dbPassword = "password123" // In source code
SUCESSO: 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.issues }
}
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
FALHA: NUNCA Concatene SQL
// DANGEROUS - SQL Injection vulnerability
const query = `SELECT * FROM users WHERE email = '${userEmail}'`
await db.query(query)
SUCESSO: SEMPRE Use Consultas Parametrizadas
// Safe - parameterized query
const { data } = await supabase
.from('users')
.select('*')
.eq('email', userEmail)
// Or with raw SQL -- the value goes in the params array, never in the
// string. Use your driver's placeholder syntax (Postgres numbers its
// placeholders, MySQL uses "?").
await db.query(
'SELECT * FROM users WHERE email = ?',
[userEmail]
)
<!-- Não escreva um placeholder literal de cifrão-N em nenhum lugar deste arquivo.
Invocar esta habilidade com argumentos a substitui, e o exemplo
acima então renderiza como SQL concatenado -- o exato anti-padrão que esta
seção adverte contra. Use "?" e nomeie a forma Postgres em prosa. -->
Passos de Verificação
- Todas as consultas ao banco de dados usam consultas parametrizadas
- Nenhuma 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
// FAIL: WRONG: localStorage (vulnerable to XSS)
localStorage.setItem('token', token)
// PASS: 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) {
// SEMPRE verifique a autorização primeiro
const requester = await db.users.findUnique({
where: { id: requesterId }
})
if (requester.role !== 'admin') {
return NextResponse.json(
{ error: 'Unauthorized' },
{ status: 403 }
)
}
// Proceder com a exclusão
…
Perguntas frequentes
O que são 'secrets'?
'Secrets' são informações confidenciais como senhas, chaves de API ou tokens de acesso. Nunca devem ser escritas diretamente no código ou expostas publicamente.
O que é validação de entrada?
É o processo de verificar se as informações que o usuário envia para o seu programa estão corretas e seguras antes de usá-las. Isso evita que dados maliciosos causem problemas.
O que é injeção de SQL?
É um ataque onde alguém insere comandos maliciosos em um campo de texto que seu programa envia para o banco de dados. Isso pode permitir que o atacante veja ou modifique seus dados. A ferramenta ensina a prevenir isso.
Detalhes
Descrição original do autor
Use this skill when adding authentication, handling user input, working with secrets, creating API endpoints, or implementing payment/sensitive features. Provides comprehensive security checklist and patterns.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #119
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
security-and-hardening
Protege seu código contra ataques e falhas de segurança. Garante que dados sensíveis estejam seguros e que o sistema seja confiável.
addyosmani/agent-skills
luna
Faz seu agente verificar se o código está seguro e funcionando corretamente. Ele procura por erros e falhas que possam causar problemas.
sickn33/agentic-awesome-skills
anti-reversing-techniques
Ajuda seu agente a analisar técnicas de segurança em programas. Permite entender como softwares se protegem contra cópias ou alterações.
sickn33/agentic-awesome-skills