Contextualização
Banco de Dados e Autenticação de Usuários em Python para Web são elementos cruciais para o funcionamento de qualquer aplicação web moderna. Tanto para armazenar informações relevantes para o funcionamento do site, como para garantir a segurança dos dados dos usuários, estes componentes são indispensáveis. Para dominar completamente a arte do desenvolvimento web, é necessário ter uma firme compreensão destes conceitos fundamentais.
A internet está cada vez mais presente em nosso dia a dia, e nessa era digital, lidar com grandes quantidades de dados tornou-se imprescindível. É nesta lacuna que os bancos de dados se encaixam. Eles são sistemas de armazenamento estruturado de dados que permitem a manipulação, recuperação e busca de informações. No mundo real, os bancos de dados têm uma vasta gama de aplicabilidades, desde sites de redes sociais, sistemas bancários, sites de e-commerce até sistemas de gestão empresarial.
Por outro lado, a autenticação de usuários é uma medida de segurança essencial que verifica a identidade de um usuário antes de conceder-lhe acesso a recursos de um sistema. No mundo virtual, bilhões de pessoas estão online todo dia, acessando seus emails, contas bancárias, redes sociais, entre outros, e cada uma dessas ações requer autenticação de usuário.
Introdução
Neste projeto, abordaremos os conceitos de Banco de Dados em particular SQL (Structured Query Language) e NoSQL (Not Only SQL), duas abordagens de modelagem de banco de dados amplamente empregadas. Aprenderemos como criar, ler, atualizar e excluir (CRUD) registros de um banco de dados usando SQL, assim como exploraremos os princípios de bancos de dados NoSQL.
A segunda grande parte do projeto focará na Autenticação de Usuários. Exploraremos diferentes formas de autenticação, como a autenticação HTTP básica, tokens JWT (JSON Web Token), OAuth, entre outros. Além disso, aprenderemos sobre os perigos dos ataques de injeção SQL e como prevenir esses ataques ao construir aplicativos web.
Este projeto aprofunda-se sobre tópicos importantes e essenciais em linguagem Python para web, como banco de dados e autenticação de usuários. Ao longo do projeto, os estudantes terão a chance de implementar e trabalhar nesses tópicos, obtendo uma base sólida que os ajudará a criar poderosas e seguras aplicações web.
Materiais de Apoio
-
Tutorial Python em W3Schools: [Python MySQL] um excelente recurso para iniciantes em Python e SQL.
-
Livro "Flask Web Development: Developing Web Applications with Python" de Miguel Grinberg, uma boa leitura para entender melhor o desenvolvimento Web em Python.
-
Udemy Course: [Python and Django Full Stack Web Developer Bootcamp] um curso on-line completo para aqueles interessados em dominar Python e Django para desenvolvimento web.
-
Documentação oficial do Django: [Django Authentication] um ótimo lugar para aprender sobre autenticação de usuário em aplicações web.
-
Tutorial de autenticação de usuário do Flask: [Flask Login] para entender como o Flask lida com a autenticação de usuários.
Atividade Prática
Desenvolvimento de um Sistema de Login e Banco de Dados Simples com Python
Objetivo do Projeto
O objetivo central deste projeto é o desenvolvimento de um sistema de login e de um banco de dados simples para uma aplicação web fictícia utilizando Python. O sistema deve ser capaz de registrar, autenticar (login/logout) e gerenciar sessões de usuários enquanto protege adequadamente as informações sensíveis armazenadas.
Materiais Necessários
- Python (versão 3.6 ou superior)
- SQLite (para o banco de dados)
- Flask (para o desenvolvimento da aplicação web)
- Flask-Login (para a autenticação de usuário)
- Suporte para desenvolvimento de texto (Editor de código, Google Docs, Microsoft Word, etc.) para redação do relatório.
Descrição Detalhada do Projeto
Este projeto, idealmente realizado em grupos de 3 a 5 alunos, envolve o desenvolvimento de um sistema simples de login e um banco de dados para uma aplicação web, onde os usuários podem se registrar, entrar, sair e ter suas sessões gerenciadas.
Passo a Passo da Atividade Prática
-
Configurando o ambiente de trabalho: Cada grupo deve configurar seu ambiente de desenvolvimento, assegurando que as ferramentas e bibliotecas necessárias estão instaladas e funcionando. Este passo inclui a instalação do Python, SQLite e Flask.
-
Criação do Banco de Dados: Usando SQLite, crie uma tabela
Users
com campos adequados comoemail
,password
,name
, etc. Recorde-se da importância de armazenar senhas de forma segura (i.e., hashed e salted). -
Desenvolvimento da Aplicação Web: Usando Flask, desenvolva uma aplicação web simples com rotas para o registro, login e logout do usuário, além de uma página inicial apenas para usuários autenticados.
-
Implementação do Sistema de Login: Utilize o Flask-Login para implementar a autenticação de usuários. Isto deve incluir o registro, o login, o logout e o gerenciamento de sessões.
-
Testes: Verifique a funcionalidade e a segurança do sistema. Certifique-se de que as senhas estão sendo devidamente protegidas e que as sessões de usuário estão sendo corretamente gerenciadas.
-
Preparação do Relatório: Por fim, prepare um relatório detalhado do projeto, incluindo conteúdos desde a introdução até as conclusões e a bibliografia utilizada.
Entregas do Projeto
Solicitamos que as equipes apresentem duas entregas principais ao finalizar este projeto:
-
O Sistema de Login e o Banco de Dados: A aplicação web desenvolvida, incluindo todos os seus arquivos de código-fonte e o banco de dados SQLite. O sistema deve ser executável e todas as suas funcionalidades demonstráveis.
-
O relatório: Cada equipe deve produzir um relatório detalhado e bem estruturado. O relatório deve seguir a estrutura solicitada, isto é, Introdução do tema, Desenvolvimento, Conclusões e Bibliografia utilizada. O relatório deve ser ilustrativo, mostrando todas as fases do projeto, destacando aprendizados, desafios encontrados e como foram superados.
Na "Introdução", os alunos devem trazer a importância dos conceitos trabalhados para o mundo da programação, justificando assim, o contexto do trabalho. No "Desenvolvimento", uma explicação aprofundada do passo a passo realizado, suas implicações teóricas e práticas, justificando cada passo. Na "Conclusão", as equipes devem despertar reflexões acerca do aprendizado adquirido, bem como tecer considerações finais sobre o trabalho executado. Na sessão de “Bibliografia”, os alunos deverão citar todas as fontes de pesquisa e materiais que utilizaram para completar o projeto.
Todas estas entregas ajudarão a demonstrar não apenas o entendimento do tópico por parte dos alunos, mas também sua capacidade de aplicar esses conceitos na prática de maneira eficaz e segura.