Autenticação e Autorização em Aplicações WebAtividades e Estratégias de Ensino
Este tópico envolve conceitos abstratos que se tornam claros quando os alunos interagem com sistemas reais. Ao implementarem autenticação e autorização em aplicações práticas, os estudantes compreendem a importância de cada camada de segurança, uma vez que os erros têm consequências imediatas e visíveis no funcionamento das aplicações.
Objetivos de Aprendizagem
- 1Implementar mecanismos de autenticação robustos, como hashing de passwords e tokens JWT, para proteger o acesso a uma aplicação web.
- 2Comparar e contrastar os modelos de autorização baseados em papéis (RBAC) e baseados em atributos (ABAC) no contexto de aplicações web.
- 3Avaliar a segurança de um sistema de autenticação e autorização existente, identificando potenciais vulnerabilidades como ataques de força bruta ou escalada de privilégios.
- 4Desenvolver um protótipo de sistema de gestão de utilizadores que inclua registo, login seguro e atribuição de permissões específicas.
- 5Explicar a importância da gestão segura de sessões e os riscos associados a falhas nesse processo.
Pretende um plano de aula completo com estes objetivos? Gerar uma Missão →
Codificação em Pares: Login Simples com Sessões
Os pares criam uma aplicação web básica com Node.js ou Flask que usa autenticação por palavra-passe hashada e sessões para login. Testam acessos válidos e inválidos, registando logs de tentativas falhadas. Apresentam o código à turma para feedback.
Preparação e detalhes
Como podemos garantir que apenas utilizadores autorizados acedem a informações sensíveis?
Sugestão de Facilitação: Durante a Codificação em Pares, peça aos alunos para alternarem entre os papéis de 'desenvolvedor' e 'hacker' em intervalos de 10 minutos, incentivando-os a pensar criticamente sobre como quebrariam o sistema que estão a construir.
Setup: Grupos organizados em mesas com acesso a materiais de investigação
Materials: Documento com o cenário do problema, Quadro KWL ou estrutura de inquiry, Biblioteca de recursos, Modelo para apresentação da solução
Simulação de Ataques: Grupos de Vulnerabilidades
Divida a turma em grupos para simular ataques como brute-force ou man-in-the-middle em apps mockup. Cada grupo implementa defesas como CAPTCHA ou HTTPS, testa contra outros grupos e relata eficácia. Discuta resultados em plenário.
Preparação e detalhes
Analise a diferença entre autenticação e autorização e a sua importância na segurança.
Sugestão de Facilitação: Na Simulação de Ataques, atribua vulnerabilidades específicas a cada grupo e peça-lhes para apresentarem a sua estratégia de exploração num formato de 'conferência de segurança', promovendo a discussão entre pares.
Setup: Grupos organizados em mesas com acesso a materiais de investigação
Materials: Documento com o cenário do problema, Quadro KWL ou estrutura de inquiry, Biblioteca de recursos, Modelo para apresentação da solução
Projeto Colaborativo: App com RBAC
Em pequenos grupos, desenvolvam uma app web com Role-Based Access Control, atribuindo papéis como admin e user. Implementem rotas protegidas, testem acessos e avaliem riscos. Partilhem repositórios GitHub para revisão coletiva.
Preparação e detalhes
Avalie os riscos de segurança associados a implementações de autenticação fracas.
Sugestão de Facilitação: No Projeto Colaborativo, defina marcos claros para a implementação de RBAC, como 'criação do modelo de papéis' e 'teste de permissões', para manter o projeto alinhado com os objetivos da atividade.
Setup: Grupos organizados em mesas com acesso a materiais de investigação
Materials: Documento com o cenário do problema, Quadro KWL ou estrutura de inquiry, Biblioteca de recursos, Modelo para apresentação da solução
Análise Individual: Auditoria de Código
Cada aluno analisa código de autenticação fornecido, identifica fraquezas como passwords em claro e propõe correções com JWT. Submete relatório com testes unitários demonstrando melhorias.
Preparação e detalhes
Como podemos garantir que apenas utilizadores autorizados acedem a informações sensíveis?
Sugestão de Facilitação: Na Análise Individual, forneça código com erros intencionais e peça aos alunos para corrigirem as vulnerabilidades antes de avançarem para a discussão em grupo, garantindo que todos compreendem os conceitos.
Setup: Grupos organizados em mesas com acesso a materiais de investigação
Materials: Documento com o cenário do problema, Quadro KWL ou estrutura de inquiry, Biblioteca de recursos, Modelo para apresentação da solução
Ensinar Este Tópico
Comece por demonstrar um sistema simples de login com vulnerabilidades evidentes, como passwords em texto plano, para que os alunos identifiquem os problemas logo no início. Evite explicar demasiados conceitos teóricos de uma vez; em vez disso, introduza cada tópico à medida que os alunos o necessitam durante as atividades práticas. Pesquisas mostram que a aprendizagem baseada em projetos, especialmente em segurança informática, melhora a retenção quando os alunos conseguem visualizar as consequências dos seus erros.
O Que Esperar
No final, os alunos demonstram segurança ao implementar sistemas de autenticação robustos e autorização baseada em papéis. Devem ser capazes de explicar o processo completo, identificar vulnerabilidades comuns e justificar as suas escolhas técnicas com base em critérios de segurança.
Estas atividades são um ponto de partida. A missão completa é a experiência.
- Guião completo de facilitação com falas do professor
- Materiais imprimíveis para o aluno, prontos para a aula
- Estratégias de diferenciação para cada tipo de aluno
Atenção a estes erros comuns
Erro comumDurante a Codificação em Pares, watch for students who confuse autenticação com autorização ao implementarem o sistema de login.
O que ensinar em alternativa
Peça aos pares para documentarem cada passo do processo num quadro branco: primeiro, identifiquem onde a identidade do utilizador é verificada (autenticação) e depois onde as permissões são verificadas (autorização), usando exemplos concretos do código que estão a escrever.
Erro comumDurante a Simulação de Ataques, watch for students who assume que armazenar passwords em texto plano é suficiente para aplicações de pequena escala.
O que ensinar em alternativa
Peça aos grupos para simularem uma fuga de dados com passwords em texto plano e compararem o impacto com um sistema onde as passwords estão hashadas, usando ferramentas como Hashcat para demonstrar a diferença na prática.
Erro comumDurante o Projeto Colaborativo, watch for students who implementam sessões sem expiração, acreditando que o acesso permanente é seguro.
O que ensinar em alternativa
Defina um timer visível durante o desenvolvimento e peça aos alunos para testarem o que acontece quando a sessão expira, ajustando o tempo de inatividade com base nos resultados observados.
Ideias de Avaliação
Após a Codificação em Pares, peça aos alunos para escreverem num pequeno papel: 1) Uma frase que explique a diferença fundamental entre autenticação e autorização. 2) Um exemplo de uma aplicação onde a autorização baseada em papéis é crucial e qual seria um papel comum nessa aplicação.
Durante a Simulação de Ataques, apresente um cenário: 'Um utilizador tenta aceder a uma página de administração que requer permissões de 'editor'. O sistema verifica a sua identidade (login) e depois verifica se o seu papel é 'editor'. Qual destes passos é autenticação e qual é autorização?'. Recolha respostas rápidas para avaliar a compreensão imediata.
Após a Análise Individual, em pares, os alunos analisam um pequeno trecho de código (fornecido pelo professor) que implementa um sistema de login básico. Devem identificar: 1) Onde ocorre a autenticação. 2) Que tipo de vulnerabilidade de segurança poderia existir se o código fosse mais complexo (ex: falta de hashing). Cada par apresenta as suas descobertas à turma.
Extensões e Apoio
- Peça aos alunos que implementem autenticação multifator num pequeno módulo da aplicação, usando bibliotecas como Twilio ou Google Authenticator para explorar soluções do mundo real.
- Para alunos que têm dificuldade, forneça um template de código com as funções principais já implementadas e peça-lhes para completarem apenas a lógica de autorização, focando-se nos papéis.
- Para turmas avançadas, proponha um desafio de 'ataque e defesa', onde um grupo tenta explorar uma vulnerabilidade enquanto o outro defende o sistema, simulando um cenário de 'capture the flag'.
Vocabulário-Chave
| Autenticação | Processo de verificar a identidade de um utilizador, confirmando que ele é quem diz ser. Exemplos incluem login com nome de utilizador e palavra-passe, ou autenticação biométrica. |
| Autorização | Processo de determinar que ações um utilizador autenticado pode realizar dentro de uma aplicação. Define os níveis de acesso a recursos ou funcionalidades. |
| Hashing de Password | Processo de transformar uma palavra-passe numa sequência de caracteres de tamanho fixo (hash) para a armazenar de forma segura. Torna difícil a recuperação da palavra-passe original mesmo que a base de dados seja comprometida. |
| Token JWT (JSON Web Token) | Um padrão compacto e autónomo para representar de forma segura informações entre duas partes como um objeto JSON. Frequentemente usado para autenticação e autorização em APIs web. |
| RBAC (Role-Based Access Control) | Um modelo de controlo de acesso onde as permissões são atribuídas a funções (papéis), e os utilizadores recebem esses papéis. Simplifica a gestão de permissões em sistemas com muitos utilizadores. |
Metodologias Sugeridas
Mais em Desenvolvimento de Aplicações e Web
Fundamentos de HTML: Estrutura e Semântica
Os alunos estruturam conteúdos de páginas web utilizando HTML, focando na semântica e acessibilidade.
2 methodologies
Estilização com CSS: Seletores e Propriedades
Os alunos estilizam visualmente páginas web usando CSS, aplicando seletores e propriedades para controlar o layout e a aparência.
2 methodologies
Layout Responsivo com CSS Flexbox e Grid
Os alunos criam designs responsivos que se adaptam a diferentes tamanhos de ecrã usando Flexbox e CSS Grid.
2 methodologies
Interatividade com JavaScript: DOM e Eventos
Os alunos introduzem-se à programação do lado do cliente para tornar as páginas web dinâmicas, manipulando o DOM e gerindo eventos.
2 methodologies
Validação de Formulários com JavaScript
Os alunos implementam validação de dados em formulários web usando JavaScript para melhorar a experiência do utilizador e a segurança.
2 methodologies
Preparado para lecionar Autenticação e Autorização em Aplicações Web?
Gere uma missão completa com tudo o que precisa
Gerar uma Missão