Segurança Hotwire avançada
O curso examina os pontos de uma aplicação Hotwire em que o trabalho sai da requisição que você imaginava. Mostra o que um broadcast renderiza sem requisição, sem sessão e sem usuário atual, e por que nada por espectador cabe numa partial de broadcast. Trata de nonces de Content Security Policy com importmap, de tokens CSRF nos envios do Turbo e em fetch escrito à mão, de prefetch disparado no hover e de morphing com identidade no DOM. Termina com frames, origens, atributos data como input não confiável e um checklist de seis perguntas.
O que você vai aprender
- ✓Por que partials de broadcast renderizam sem requisição, sessão ou usuário atual
- ✓Como broadcasts de refresh fazem cada inscrito buscar de novo com a própria sessão
- ✓O que um nonce de CSP protege e por que o importmap precisa dele
- ✓Como o Turbo envia o token CSRF e o que o seu próprio fetch precisa fazer
- ✓Por que o prefetch transforma GETs que mudam estado em ações disparadas por hover
- ✓Como o morphing preserva nós do DOM e por que frames e atributos data exigem cuidado
A superfície de ataque do Hotwire
Um job em background renderiza uma partial. Ninguém está logado dentro desse job, porque ninguém é nada dentro de um job. A partial pede o usuário atual, recebe nil e renderiza a versão deslogada de um card. O Action Cable manda esse mesmo HTML para todo navegador inscrito no stream.
Ler a aula completa grátis →Currículo
7 aulasA superfície de ataque do Hotwire
Apresenta quatro momentos em que o trabalho do Hotwire sai da requisição: jobs de broadcast, hover, morph e frames.
O que um broadcast renderiza sem ter
Mostra que broadcasts renderizam pelo ApplicationController.render sem requisição, sessão ou usuário, e como broadcasts de refresh evitam isso.
CSP e o nonce que o Hotwire precisa
Explica por que uma aplicação com importmap precisa de nonce na CSP, o que ele protege e como avaliar o gerador.
CSRF, Turbo e o seu próprio fetch
Mostra como o Turbo envia o token CSRF, por que um fetch escrito à mão precisa enviá-lo e o risco de formulários em cache.
Prefetch dispara requisições reais
Explica que o prefetch do Turbo faz GETs reais no hover, por que GETs que mudam estado são perigosos e como desligá-lo.
Morphing e identidade no DOM
Descreve como o morphing funde o DOM, como o idiomorph casa nós pelo id e por que nós preservados afetam a segurança.
Juntando tudo: frames, origens e DOM não confiável
Trata frames como fetches delegados, atributos data como input não confiável e traz um checklist de seis perguntas para funcionalidades Hotwire.