Hashing de senhas no Django: por que uma coluna SHA-1 feita à mão cai numa passada offline, e como set_password() e um hasher embrulhado corrigem. OWASP A04.
Leia mais →
OAuth2 no Django: por que o callback que acha o usuário pelo e-mail do ID token deixa o atacante entrar como a vítima, e como iss + sub corrige. OWASP A07.
Leia mais →
JWT no Django: por que o alg:none já não funciona, por que o simplejwt assina com a SECRET_KEY e por que o logout mantém o access token vivo. OWASP A07.
Leia mais →
MFA no Django: por que o @login_required não enxerga um segundo fator, como um caminho que o pula desfaz tudo e o que o otp_required corrige. OWASP A07.
Leia mais →
Redefinição de senha no Django: um token guardado que nunca expira nem se aposenta, links vazados que seguem valendo e a chamada que resolve os dois. OWASP A07.
Leia mais →
Senhas fracas no Django: por que os quatro validadores padrão aceitam Password123!, o que a NIST 800-63B-4 agora proíbe, e como checar vazamentos. OWASP A07.
Leia mais →
Sequestro e fixação de sessão no Django: por que login() rotaciona a chave, um fluxo feito à mão desfaz isso e as flags de cookie. OWASP A07.
Leia mais →
Força bruta no Django: por que o auth nunca limita logins, como django-axes e rate limiting fecham a lacuna e por que limites por IP falham. OWASP A07.
Leia mais →
Mass assignment no Django: como fields='__all__' deixa atacantes gravar campos como status ou dono, e como listas explícitas impedem. OWASP A08.
Leia mais →
Path traversal no Django: como os.path.join permite escapar do MEDIA_ROOT, por que safe_join impede e quando FileField elimina o risco. OWASP A01.
Leia mais →