Skip to content

Latest commit

 

History

History
201 lines (106 loc) · 6.09 KB

24. Projeto em Desenvolvimento de Aplicação WEB - Parte 2.md

File metadata and controls

201 lines (106 loc) · 6.09 KB

Projeto em Desenvolvimento de Aplicação WEB - Parte 2

Aula 01 - Rodrigo Freitas Leite

O que é um Full Stack developer?

Full-stack developer

Desenvolvedores full-stack são especialistas em front-end e back-end.

Front-end developer

Lida com tudo relacionado à interação do usuário. Une os dados entregues pelo backend junto com as definições da interface do usuário.

Back-end developer

Armazena informações em bancos de dados, desenvolve APIs e gerencia as conexões dos usuários.

T-shaped developer

image

π-shaped developer

image

Comb-shaped developer

image

Effective shaped developer

image

Codebase

Dependencies

...

Configuração

Variáveis de ambiente

...

Serviço externo

Database

...

Ports

...

Stateless

...

Build

...

Dev & Prod (Paridade)

Tempo

O tempo de deploy para uma aplicação deve ser o mais rápido possível. Jamais deveria levar dias ou semanas para fazer um release de versão.

O desenvolvimento de features pode demorar dias ou semanas, mas seu deploy tem de ser feito em horas ou até mesmo em minutos.

Time

O time tem de ser responsável pelo desenvolvimento desde a sua concepção até estar em produção.

Ferramentas

As ferramentas de desenvolvimento e produção devem ser as mesmas ou o mais similares possíveis.

Concorrência

Escalabilidade horizontal, visto que não temos estado em nossas aplicações é possível mudar a configuração da máquina ou aumentar a quantidade de containers.

Load Balancer

https://www.youtube.com/watch?v=ZcNaOuxcuyA

Logs

O sistema deve enviar logs das ações para o stdout como um stream o qual podemos enviar para uma plataforma de log.

Regras

...

Custo

Valores

O custo de manter serviços em cloud sempre precisam ser estimados antes do seu desenvolvimento, ou seja, precisamos entender se a nossa aplicação vai ser cobrada por tempo de máquina, por uso de memória, por tráfego de rede e outros fatores.

Testes Automatizados

Cypress

Cypress pode criar testes para os aplicativos da web. Podendo analisar e executar automaticamente.

Segurança

Limitar acessos a API

Limitar a quantidade de request por IP a API como, por exemplo, login e/ou reset de password.

Express Rate Limit - https://www.npmjs.com/package/express-rate-limit

XSS-Clean

Limpar os inputs vindos de Post, Get e parâmetros nas urls enviadas pelo usuário.

Helmet

Define cabeçalhos de resposta HTTP relacionados à segurança para proteger contra algumas vulnerabilidades da Web conhecidas.

Ataques de script entre sites, injeções entre sites, clickjacking, detecção de MIME sniffing. Desativando o cabeçalho X-Powered-By.

Define alguns cabeçalhos para evitar vulnerabilidades conhecidas de forma apropriadas.

Helmet - https://www.npmjs.com/package/helmet

Web Application Firewall

O WAF, ou firewall de aplicativos web, ajuda a proteger os aplicativos web ao filtrar e/ou monitorar o tráfego HTTP entre o aplicativo web e a internet.

De modo geral, o WAF protege os aplicativos web contra ataques como falsificação de solicitação entre sites, cross-site-scripting (XSS), inclusão de arquivo e injeção de SQL, entre outros.

Melhores práticas

  1. Mantenha o Node.js e todas as dependências atualizados para garantir que os patches de segurança mais recentes estejam em vigor.
  2. Use middleware e frameworks que fornecem medidas de segurança integradas, como Express.js e Helmet.js.
  3. Use práticas de codificação seguras, como validação de parâmetros, tratamento de erros e métodos de autenticação seguros.
  4. Use protocolos de comunicação seguros, como HTTPS, para criptografar dados confidenciais.
  5. Use ferramentas e serviços de segurança, como scanners de vulnerabilidade e ferramentas de teste de segurança, para identificar e solucionar os pontos fracos da segurança.
  6. Implemente registro e monitoramento de segurança para rastrear e investigar eventos de segurança.
  7. Limite o acesso a informações e funções confidenciais implementando controle de acesso baseado em função e autenticação de usuário.
  8. Evite usar pacotes e bibliotecas de terceiros inseguros e revise minuciosamente o código de quaisquer pacotes ou bibliotecas que você usar.
  9. Use criptografia para proteger dados confidenciais.
  10. Realize regularmente auditorias de segurança e testes de penetração para identificar e solucionar vulnerabilidades de segurança.

OWASP

The Open Web Application Security Project é uma fundação que trabalha para melhorar a segurança dos projetos de software, expondo as falhas e como corrigi-las.

Comunidades

...

Aula 02 - Rodrigo Freitas Leite

OpenAI

ChatGPT

O ChatGPT é um chatbot com inteligência artificial desenvolvido pela OpenAI e especializado em diálogo humano.

ChatGPT foi treinado com um vasto conteúdo e através de uma conversa consegue interpretar e manter o diálogo com referências a perguntas anteriores.

Concorrência

Concorrente, o Bard da Google, está em acesso fechado para alguns usuários.

Tecnologia

A tecnologia do ChatGPT tem em torno de dois anos e está trazendo diversos questionamentos em diversas áreas da como educação, programação entre outras.

Clouds

...

Empreendedorismo

...

Projeto

...

Design System

...

Módulos

...

Resultado da prova

Em 16/02/2024 - Nota 10 - 1º