AULA 43
MÓDULO 5
segurança
⏱ 50 min
HTTPS e TLS
TLS: confidencialidade, integridade, autenticidade. Let's Encrypt. helmet.js, rate limiting, bcrypt, SQL injection.
HTTPSTLScertificadoLet's Encrypthelmetbcryptrate limitingSQL injection
HTTPS e TLS
HTTPS = HTTP + TLS. Garante: confidencialidade (dados cifrados), integridade (dados não adulterados), autenticidade (servidor é quem diz ser).
TLS HANDSHAKE
1
Browser envia ClientHello com versões TLS suportadas
2
Servidor responde com certificado (chave pública)
3
Browser verifica se certificado é válido e confiável
4
Negociam chave de sessão simétrica
5
Dados cifrados com a chave de sessão
Certificados e Let's Encrypt
Todo servidor HTTPS precisa de um certificado SSL/TLS emitido por uma CA confiável. Let's Encrypt emite certificados gratuitos automaticamente.
HSTS
HTTP Strict Transport Security instrui browsers a sempre usar HTTPS. Evita ataques de downgrade. Adicione o header Strict-Transport-Security no servidor.Boas práticas de segurança
Segurança em profundidade: HTTPS é só uma camada. Outras práticas essenciais:
helmet.js — Headers de segurança: CSP, X-Frame-Options, HSTS
rate limiting — express-rate-limit: bloquear brute force e DDoS
bcrypt — Nunca armazenar senha em texto plano — sempre hash
SQL injection — Use parameterized queries — nunca concatenar SQL
OWASP Top 10 — Leia e implemente proteções contra as 10 vulnerabilidades mais comuns
javascript
// helmet.js + rate limiting + bcrypt const helmet = require('helmet') const rateLimit = require('express-rate-limit') const bcrypt = require('bcryptjs') app.use(helmet()) // CSP, HSTS, X-Frame-Options, etc app.use('/api/', rateLimit({ windowMs: 15 * 60 * 1000, max: 100, message: { error: 'Muitas requisições — tente em 15 minutos' } })) // Hash de senha const hashPassword = async (pwd) => bcrypt.hash(pwd, 12) const verifyPassword = async (pwd, hash) => bcrypt.compare(pwd, hash) // SQL injection — NUNCA concatenar // ✗ db.query(`SELECT * FROM users WHERE email = '${email}'`) // ✓ db.query('SELECT * FROM users WHERE email = $1', [email])
quiz · aula 43
Teste seus conhecimentos
0/3 respondidas
QUESTÃO 01
O que TLS garante?
QUESTÃO 02
Para que serve o bcrypt?
QUESTÃO 03
Por que nunca concatenar variáveis em queries SQL?
0/3