Turbo Streams: segurança
Turbo Streams: segurança examina o que um nome de stream assinado protege e o que deixa em aberto. Lendo o código da gem instalada, as aulas mostram que uma única chave da aplicação assina todos os nomes. Mostram também que o conteúdo se decodifica com Base64 comum e que nomes assinados não expiram. O controle de acesso vem da proteção da página que renderiza a tag turbo_stream_from. O curso trata ainda do escopo por registro via GlobalID, de canais próprios com subscription_allowed? e de quatro perguntas para decidir o que entra num streamable.
O que você vai aprender
- ✓Por que um nome de stream assinado é legítimo sem ser autorizado
- ✓Como a decodificação em Base64 mostra que a assinatura não esconde o conteúdo
- ✓Proteções de página como require_login como a fronteira de acesso de um stream
- ✓Escopo de streams por registro com GlobalID e to_gid_param
- ✓Por que nomes assinados não expiram e quando um canal próprio com subscription_allowed? é necessário
- ✓Uma lista para escolher o que entra num streamable
Assinado não significa autorizado
Um nome de stream assinado (dois cursos atrás) não pode ser adulterado. Um cliente não consegue inventar um novo; só pode apresentar um que o servidor gerou. Esse fato responde a uma pergunta e deixa outra em aberto. Provar que um nome é legítimo não diz nada sobre se este visitante, agora, pode…
Ler a aula completa grátis →Currículo
7 aulasAssinado não significa autorizado
Um nome assinado prova que o servidor o gerou, mas o canal do Turbo não confere quem se inscreve.
Assinado não significa secreto
A assinatura garante integridade, sem confidencialidade: um Base64.decode64 sem chave recupera o conteúdo do nome.
A fronteira real é a página
Proteções como require_login decidem quem carrega a página e, com isso, quem recebe a tag turbo_stream_from.
Restringindo um stream a um registro
Passar um registro ao turbo_stream_from gera o nome pelo GlobalID, e models diferentes nunca colidem.
Nomes assinados não expiram
O Turbo nunca passa opção de expiração, então um nome vazado funciona até a chave mudar.
Escolhendo o que entra num streamable
Quatro perguntas tiradas das aulas anteriores decidem o que é seguro entregar ao turbo_stream_from.
Juntando tudo: do público ao privado
Uma revisão das descobertas, do stream público do roadmap às duas camadas que um stream privado exige.