Você está na página 1de 13

CENTRO UNIVERSITÁRIO ESTÁCIO META DE RIO BRANCO -

ESTÁCIO UNIMETA

LUIZ GUSTAVO BEZERRA SENA - 202052238252


MARCOS DIEGO NOBRE SANTOS – 202052233897

RELATÓRIO DE ESTÁGIO SUPERVISIONADO

Rio Branco – AC
2022
Nós, Luiz Gustavo Bezerra Sena e Marcos Diego Nobre Santos,
autorizamos o Centro Universitário Estácio Meta de Rio Branco – Estácio
Unimeta a publicar o nosso relatório em versão eletrônica no site da
Instituição, além de resumo e e-mail.

Rio Branco, 27/05/2022

Luiz Gustavo Bezerra Sena, Marcos Diego Nobre Santos


CENTRO UNIVERSITÁRIO ESTÁCIO META DE RIO BRANCO - ESTÁCIO
UNIMETA

RELATÓRIO DE ESTÁGIO SUPERVISIONADO


DO CURSO SUPERIOR DE SISTEMAS DE INFORMAÇÃO

LUIZ GUSTAVO BEZERRA SENA - 202052238252


MARCOS DIEGO NOBRE SANTOS – 202052233897

Prof. Me Cleuton de Menezes Almeida — Orientador do Setor de Estágios

Rio Branco – AC
2022
RESUMO
O intuito do projeto é criar um sistema para automatizar o atendimento de pedidos
de Bares e Restaurantes. O projeto foi desenvolvido no front-end com HTML, CSS, SASS
(Framework CSS), Bootstrap (Framework Web) e JavaScript. No back-end foi utilizado
a linguagem de programação python com o framework full-stack Django. No banco de
dados, foi utilizado o banco de dado relacional MySQL.

Luiz Gustavo Bezerra Sena e Marcos Diego Nobre Santos

Relatório de Estágio
Curso Superior em Sistemas de Informação
Centro Universitário Estácio Meta de Rio Branco – Estácio Unimeta, Rio Branco,
2022.
Introdução
Com altas demandas de clientes e pedidos em bares e restaurantes, o sistema
proposto por nós foi criado pensando nessas dificuldades, com a intenção de facilitar e
agilizar os processos que antes eram demorados e manuais para uma forma mais
automatizada e dinâmica. O sistema de automatização de pedidos faz jus ao nome,
enviando pedidos, em um click, diretamente da mesa para a cozinha ou balcão.
Todo o sistema foi pensando, estruturado e construído com as melhores
ferramentas para um bom desempenho e funcionamento do sistema, o visual foi inspirado
em um sistema de Dashboard com ótimas cores para visualização. Resumindo, o sistema
é perfeito para um Bar ou Restaurante que sofre com alto fluxo e muita demanda, para
que não seja necessário a contratação de muitos empregados.

Levando em consideração esse projeto de estágio, as maiores dificuldades é


conseguir implementar um sistema sem o feedback de um usuário, pois dessa forma fica
mais difícil criar funções que o desenvolvedor não sabe como funciona, é um
desenvolvimento abstrato, de certa forma.

Do ponto de vista do design front-end, é muito difícil criar algo 100% autêntico
quando você não encontra um sistema que possa se basear, mesmo com a ajuda dos
frameworks de design como Bootstrap ainda sim é difícil criar algo autêntico, pois o
framework cria uma interface monótona.

Revisão Teórica
1. Python
Segundo (Ugo Roveda, 2020), python criado com a filosofia de valorizar o esforço
humano sobre o computacional, Python é uma linguagem de programação acessível e
muito popular em setores emergentes da indústria de tecnologia. É uma linguagem de
programação de alto, dinâmica, interpretada, modular, multiplataforma e orientada a
objetos.
Um de seus maiores atrativos é possuir muitas bibliotecas, nativas e de terceiros,
tornando-a muito difundida e útil em uma grande variedade de setores dentro de
desenvolvimento web, ciência de dados, IoT e outras áreas.
Afirma (Tiago Silva, 2021) que “Muitas empresas buscam profissionais com
conhecimento em frameworks de Python, como Django, Flask, Tornado e muitos outros”.
2. Django
De Acordo com (Tiago Silva, 2021) um dos maiores frameworks de Python que
existem na atualidade, o Django. "Considerado entre os três frameworks web mais
conhecidos e usados no Python, Django é uma ferramenta completa, robusta e de fácil
implementação, que nos permite criar uma aplicação web de forma rápida e consistente."
Grandes empresas como Spotify, Instagram, YouTube, Dropbox, Bitbucket, Disqus, The
Washington Post, Mozilla, Prezi, Pinterest, Reddit, Udemy, MIT, Coursera utilizam esse
framework como ferramenta de trabalho em seu dia a dia devido a diversos fatores que
agilizam a produtividade e trazem segurança e flexibilidade durante a produção de
funcionalidades de um sistema.
De acordo com a documentação oficial do framework, é uma estrutura web python
de alto nível que incentiva o desenvolvimento rápido e design limpo e pragmático.
Construído por desenvolvedores experientes, ele cuida de grande parte do incômodo do
desenvolvimento web, para que você possa se concentrar em escrever seu aplicativo sem
precisar reinventar a roda. É de código aberto e livre. Além disso o framework possui as
seguintes características de acordo com a documentação:
• Ridiculamente rápido: projetado para ajudar os desenvolvedores a levar
aplicativos do conceito à conclusão o mais rápido possível.
• Reconfortantemente seguro: leva a segurança a sério e ajuda os desenvolvedores
a evitar muitos erros de segurança comuns, como injeção de SQL, scripting cross-
site, falsificação de solicitação entre sites e outros erros de segurança.
• Extremamente escalável: alguns dos sites mais movimentados da web aproveitam
a capacidade do Django de escalar de forma rápida e flexível.
• Totalmente carregado: inclui dezenas de extras que você pode usar para lidar com
tarefas comuns de desenvolvimento web. Django cuida da autenticação do
usuário, administração de conteúdo, mapas do site, feeds RSS e muitas outras
tarefas — logo de entrada.
• Incrivelmente versátil: Empresas, organizações e governos têm usado o Django
para construir todo tipo de coisas — desde sistemas de gerenciamento de conteúdo
até redes sociais até plataformas científicas de computação

3. Padrão de Projeto do Django


O Django possui o padrão de projeto MTV (Model Template View).
• Model: definem a estrutura dos dados que serão armazenados no banco de dados,
podendo definir os tipos de campos e possivelmente também o seu tamanho
máximo, valores default, texto de ajuda para documentação, texto de labels para
formulários, se campos podem ser nulos etc. (MDN Web Docs, Mozilla).
• Template: segundo (Ana Paula de Andrade, 2021), é responsável por ajudar no
desenvolvimento de arquivos em HTML em projetos com o framework
permitindo que as informações trocadas entre as views do Django e o HTML.
• Views: De acordo com (Kimaru Thagana, 2020) são funções python ou classes
que recebem uma solicitação web e retornam uma resposta web. A resposta pode
ser uma resposta HTTP simples, uma resposta de modelo HTML ou uma resposta
de redirecionamento HTTP que redireciona um usuário para outra página.

4. Segurança
Atualmente, os aplicativos web estão se tornando uma das plataformas padrão
para representar lançamentos de dados e serviços na World Wide Web. Uma vez que os
aplicativos web são progressivamente mais utilizados para serviços críticos de segurança,
portanto, eles se tornaram um alvo bem-amado e precioso para as vulnerabilidades
relacionadas à Web. (Gary Wassermann, 2008).
Django vem com uma excelente lista de verificação de implantação que pode ser
executada na versão de produção do seu site antes da implantação. Além de anotações
abundantes sobre segurança na documentação oficial.

4.1 . Cross Site Scripting (XSS)


De acordo com (KirstenS, do site OWASP), os ataques de Scripting cross-site (XSS) são
um tipo de injeção, em que scripts maliciosos são injetados em sites. Os ataques XSS
ocorrem quando um invasor usa um aplicativo da Web para enviar código malicioso,
geralmente na forma de um script lateral do navegador, para um usuário final diferente.
As falhas que permitem que esses ataques tenham sucesso são bastante difundidas e
ocorrem em qualquer lugar que um aplicativo da Web use entrada de um usuário dentro
da saída que gera sem validá-lo ou codificar.
Um invasor pode usar esse ataque para enviar um script malicioso para um usuário
desavisado. O navegador do usuário final não tem como saber que o script não deve ser
confiável e executará o script. Por achar que o script veio de uma fonte confiável, o script
malicioso pode acessar quaisquer cookies, tokens de sessão ou outras informações
confidenciais retidas pelo navegador e usadas com esse site. Esses scripts podem até
reescrever o conteúdo da página HTML. Para obter mais detalhes sobre os diferentes tipos
de falhas do XSS
De acordo com a documento do framework, usar templates protege contra a
maioria dos ataques XSS. Os templates Django possuem escape de caracteres específicos
que são particularmente perigosos para o HTML. Embora isso proteja os usuários da
maioria das entradas de dados maliciosas, não é inteiramente a prova de tolos. Por
exemplo, ele não protegerá do seguinte:
4.2 Cross site request forgery (CSRF)
(Adam Barth, Collin Jackson e John C. Mitchell, 2008) afirmam que o CSRF é um ataque
em que o invasor forja uma solicitação entre sites no formulário de login, registrando a
vítima no site honesto como o invasor. A gravidade de uma vulnerabilidade CSRF de
login varia de acordo com o site, mas pode ser tão grave quanto uma vulnerabilidade de
script entre sites.
Segundo a documentação oficial do Django, a proteção CSRF funciona verificando uma
chave secreta em cada solicitação POST. Isso garante que um usuário mal-intencionado
não possa "reproduzir" um formulário POST no seu site e que outro usuário logado envie
esse formulário sem querer. O usuário mal-intencionado teria que conhecer o segredo,
que é específico do usuário (usando um cookie).

4.3 SQL Injection


É uma técnica de injeção de código comumente usada para atacar sites nos quais o invasor
insere caracteres SQL ou palavras-chave em uma instrução SQL por meio de parâmetros
de entrada do usuário irrestritos para alterar a lógica da consulta pretendida (Lwin Khin
Shar, Hee Beng Kuan Tan, 2012).
Os conjuntos de consultas do Django são protegidos contra injeção de SQL, pois suas
consultas são construídas usando parametrização de consultas. O código SQL de uma
consulta é definido separadamente dos parâmetros da consulta. Como os parâmetros
podem ser fornecidos pelo usuário e, portanto, inseguros, eles são escapados pelo driver
de banco de dados subjacente.

1. Cross site request forgery (CSRF)


(Adam Barth, Collin Jackson e John C. Mitchell, 2008) afirmam que o CSRF é um ataque
em que o invasor forja uma solicitação entre sites no formulário de login, registrando a
vítima no site honesto como o invasor. A gravidade de uma vulnerabilidade CSRF de
login varia de acordo com o site, mas pode ser tão grave quanto uma vulnerabilidade de
script entre sites.
Segundo a documentação oficial do Django, a proteção CSRF funciona verificando uma
chave secreta em cada solicitação POST. Isso garante que um usuário mal-intencionado
não possa "reproduzir" um formulário POST no seu site e que outro usuário logado envie
esse formulário sem querer. O usuário mal-intencionado teria que conhecer o segredo,
que é específico do usuário (usando um cookie).

4.4 SQL Injection


É uma técnica de injeção de código comumente usada para atacar sites nos quais o invasor
insere caracteres SQL ou palavras-chave em uma instrução SQL por meio de parâmetros
de entrada do usuário irrestritos para alterar a lógica da consulta pretendida (Lwin Khin
Shar, Hee Beng Kuan Tan, 2012).
Os conjuntos de consultas do Django são protegidos contra injeção de SQL, pois suas
consultas são construídas usando parametrização de consultas. O código SQL de uma
consulta é definido separadamente dos parâmetros da consulta. Como os parâmetros
podem ser fornecidos pelo usuário e, portanto, inseguros, eles são escapados pelo driver
de banco de dados subjacente.

Relato de Estágio
Apresentar a descrição das várias etapas do estágio, mostrando os resultados de
experiências técnicas, pessoais, adaptação, relacionamento, processos e metodologias
utilizadas.
Atenção: Esta parte pode ser subdividida em mais seções de acordo com a especificidade
do assunto. Deve descrever detalhadamente as conclusões obtidas pelo aluno.

1. Modelagem do Banco de Dados


1.1. Modelagem das Tabelas de usuários
De início foi criado o modelo do banco de dados para a tela de login de usuários.
Ela foi dividida em três tipos de usuários: Atendentes, Cozinheiros e Balconistas, onde
cada um tem o seu próprio acesso que libera sua interface específica dentro da página.

2. Criação da Tela de login para usuários


2.1. Desenvolvimento Front-End
2.1.1. HTML5 e CSS3
Foi utilizado HTML para a criação da página WEB de login e CSS com SASS
como framework para a estilização e organização da mesma.
Legenda: Imagem da Tela de login criada com HTML e CSS

3. Modificação do model usuários padrão do Django


Por padrão o Django já vem com um modelo de usuários pronto para ser utilizado
pelo desenvolvedor com autenticação, e como de boa prática em projetos Django,
modificar o modelo usuários para futuras modificações, no caso deste projeto, além de
boa prática, o modelo de usuários padrão já atendia parcialmente. Além dos campos
padrão da tabela usuários foi feito modificações de validação no campo e-mail para ser
obrigatório e foi incluído um enum para atender aos tipos de usuários presentes no
sistema, como atendentes, cozinheiro e balconistas.

4. Testes do modelo de usuário


Após a modificação do modelo usuário foram feitos testes unitários no modelo
para verificar a existência de bugs.

5. Criação da interface de atendimento para o cargo de atendente


5.1. Foi criado o Front-End da interface para o atendente, foram utilizadas as
seguintes tecnologias no processo: HTML5, CSS3, SASS, JavaScript e
Bootstrap5.
Legenda: Interface de atendimento do atendente

Conclusão
Com a finalização deste projeto e várias pesquisas, pode-se notar uma alta
necessidade de um sistema que automatize a tarefa de fazer pedidos em estabelecimentos
que trabalham com comidas e bebidas e que sofrem altas demandas de clientes. O
mercado de tecnologia cresce cada dia mais e com ele vem as ferramentas que facilitam
nosso dia a dia, há de 3 anos atrás ainda era muito comum ir em restaurantes e o atendente
anotar o pedido na comanda e depois se direcionar para a cozinha, hoje em dia já é muito
comum ir em estabelecimentos e os atendentes utilizarem tablets e smartphones para
realizarem pedidos, poupando tempo e esforço, além de agilizar todo processo. É
extremamente necessário que seja investido em sistemas que ajudem o trabalho humano,
realizando tarefas que de início podem parecer pequenas, mas que no final ajudam a
poupar muito tempo e trabalho.
Referências Bibliográficas

• Tiago Silva, “Django de A a Z: Crie aplicações web rápidas, seguras e


escaláveis com Python”. São Paulo: Casa do Código, 2021.
• Ugo Roveda, “O que é python, para que serve e por que aprender?”.
Disponivel em: <https://kenzie.com.br/blog/o-que-e-python/>. Acesso
em: 15 de abril de 2022.
• Kirsten S. “Cross Site Scripting (XSS)”. Disponível em:
<https://owasp.org/www-community/attacks/xss/>. Acesso em 15 de abril
de 2022.
• Ana Paula de Andrade. “O que é Django Template Language?”.
Disponível em: <https://www.treinaweb.com.br/blog/o-que-e-django-
template-language>. Acesso em: 15 de abril de 2022.
• Kimaru Thagana. “Introduction to Django Views”. Disponivel em:
<https://www.pluralsight.com/guides/introduction-to-django-views>.
Acesso em: 15 de abril de 2022.
• Adam Barth, Collin Jackson, John C. Mitchell. “Robust Defenses for
Cross-Site Request Forgery”. Disponivel em:
<https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.164.6147&r
ep=rep1&type=pdf>. Acesso em: 15 de abril de 2022.
• Lwin Khin, Hee Beng Kuan Tan. “Defeating SQL injection”. Disponivel
em:
<https://ink.library.smu.edu.sg/cgi/viewcontent.cgi?article=5901&contex
t=sis_research>. Acesso em: 15 de abril de 2022.

Você também pode gostar