Consciência básica de segurança
As cinco regras inegociáveis que todo engenheiro segue
⏱ Estim. ~5 min
01 · Ler
Você não precisa ser especialista em segurança. Mas precisa absolutamente evitar os erros que causam a maior parte dos incidentes de segurança.
A verdade é que a maior parte dos incidentes de segurança não vem de ataques sofisticados. Vem de engenheiros que esquecem o básico: senha deixada no código-fonte, entrada do usuário sem validação, endpoint em HTTP que deveria ser HTTPS.
Essas cinco regras te mantêm fora de problemas. Não são opcionais — são o padrão mínimo para escrever código em que os outros podem confiar.
02 · Ler
Memorize essas cinco regras. Elas cobrem a maior parte dos erros de segurança que engenheiros juniores cometem.
Pontos-chave
- Nunca commitar segredos: chaves de API, senhas, tokens → .env + .gitignore
- Nunca confiar em entrada do usuário: tudo que vem de formulário ou URL precisa ser sanitizado antes de usar
- Sempre usar HTTPS: nada de HTTP para qualquer coisa real — os dados em trânsito precisam ser criptografados
- Mantenha as dependências atualizadas: rode npm audit regularmente para achar vulnerabilidades conhecidas
- Não registre dados sensíveis em log: nunca console.log(password) nem tokens em logs de produção
03 · Ler
Você acabou de receber um app para auditar antes de ir para produção. Vamos ver quantas violações de segurança você acha com cat e grep.
04 · Prática de terminal
Primeiro, leia o código-fonte completo. Procure qualquer coisa que viole as cinco regras de segurança que você acabou de aprender.
(Esta seção é interativa — ative o JavaScript para usar.)
05 · Prática de terminal
Agora use grep para encontrar de uma vez todas as possíveis violações de segurança — qualquer coisa que pareça senha, segredo, ou chave.
(Esta seção é interativa — ative o JavaScript para usar.)
06 · Exemplo de código
Aqui está a versão corrigida. Compare com o que você viu — cada violação de segurança foi tratada.
app.js — problemas de segurança corrigidos
require('dotenv').config();
const express = require('express');
const app = express();
// Secrets from .env, not hardcoded
const API_SECRET = process.env.API_SECRET;
app.post('/login', (req, res) => {
// POST body, not URL query string
const { username, password } = req.body;
console.log('Login attempt:', username);
// No password logged! Compare with hashed version in DB
});
app.listen(process.env.PORT || 3000, () => {
console.log('Server running');
// No secrets logged!
});
As correções: (1) segredos movidos para o .env via dotenv, (2) login usa POST (body) em vez de GET (URL), (3) só o username é logado — nunca a senha, (4) sem comparação de senha hardcoded — use um sistema de autenticação adequado com senhas com hash, (5) os logs de inicialização não vazam segredos.
07 · Quiz
Qual destes nunca deve ser commitado no git?
- package.json
- Um arquivo .env com chaves de API
- index.html
- README.md
08 · Preencher
Para conferir as dependências do seu projeto em busca de vulnerabilidades conhecidas, rode npm _____.
Outras lições deste capítulo
⚠ A experiência interativa completa precisa de JavaScript. Ative-o e recarregue a página.
※ Este é um projeto educacional independente — não é um produto oficial da Anthropic. Claude™ é uma marca registrada da Anthropic, PBC.