Olá! Esperamos que você esteja bem e damos as boas-vindas ao curso de Segurança em Aplicações Web da Alura. Este curso é destinado a quem aspira ingressar na área de segurança de aplicações, ou PPCEC para os mais íntimos, e deseja aprender sobre o OWASP Top 10, além de diversas vulnerabilidades com siglas complexas. Vamos abordar revisão de código seguro, implementação e arquitetura de aplicações web, o ecossistema dessas aplicações, e algumas proteções tanto no client-side (lado do cliente) quanto no server-side (lado do servidor). Se isso parece confuso, este curso tem como objetivo esclarecer essas questões para você, seja um profissional aspirante à área, uma pessoa desenvolvedora que conhece bem o desenvolvimento mas ainda não teve contato com segurança, ou uma pessoa empreendedora de startup que está desenvolvendo o MVP do seu produto e se preocupa com a proteção dos dados dos clientes. Este curso é para você.
Meu nome é Pedro Kessler, sou um dos instrutores da Alura e atuo na área há alguns anos.
Audiodescrição: Pedro é um homem branco, de cabelo escuro. Ele está em seu escritório, onde há uma parede branca iluminada e alguns itens de escritório, como uma cadeira e um par de mesas logo atrás dele.
Neste curso, vamos explorar o ecossistema que envolve a segurança da informação na web. Vamos compreender o papel do front-end, do back-end, das APIs, do client-side e dos navegadores dentro desse ecossistema, além dos riscos e da importância de cada um desses elementos na criação e amadurecimento da segurança de uma aplicação, seja ela pessoal ou da empresa em que trabalhamos.
Além disso, discutiremos ataques tanto do lado do cliente quanto do servidor, como XSS, CSRF, SSRF, SSTI, SQL Injection e outros tipos de Injection. Não abordaremos apenas os ataques, mas também as proteções e correções necessárias, tanto do lado do cliente quanto do servidor, com exemplos de código e correções.
Vamos aprender a identificar vulnerabilidades e correções que não são totalmente ideais para esses ataques. O curso será apresentado de uma forma que gostaríamos de ter aprendido ao entrar na área, tornando o conteúdo acessível e fácil de entender.
Se o conteúdo é do seu interesse e você gostou do que foi explicado até agora, convidamos você a participar deste curso. Desejamos um ótimo dia e nos vemos nas aulas. Até mais!
Vamos iniciar diretamente com a Aula 1, na qual abordaremos a arquitetura de segurança web. Este conceito difere um pouco da arquitetura comum em desenvolvimento, pois focaremos no aspecto de segurança. Vamos discutir o ecossistema geral, incluindo front-end, back-end, APIs e navegadores.
Ao observarmos o ecossistema, percebemos que tudo está interconectado. O front-end se comunica com o back-end, que é renderizado pelo navegador e visualizado pela pessoa usuária. As APIs atuam como meio de comunicação entre todos esses elementos. Mesmo que você esteja iniciando na área ou já tenha alguma experiência, é importante entender que tudo se comunica no desenvolvimento, e isso também se aplica à segurança.
O primeiro conceito a ser compreendido é que tudo está conectado. O front-end sempre se comunica com o back-end ou chama alguma API, seja por meio de uma API ou uma chamada direta. Isso ocorre constantemente, inclusive enquanto você assiste a esta aula no navegador.
É fundamental ter em mente que, além da perspectiva de desenvolvimento, a segurança também está interligada. Qualquer parte desse ecossistema, seja o front-end, o back-end, as APIs ou até mesmo o navegador que você está utilizando para assistir às aulas, pode ser um vetor de ataque. Por exemplo, você pode estar usando um navegador desatualizado, como uma versão antiga do Internet Explorer, que pode ter vulnerabilidades conhecidas. Mesmo navegadores atualizados podem ser explorados por vulnerabilidades do tipo zero-day (dia zero).
Espero que tenhamos esclarecido que não apenas os navegadores, mas qualquer componente desse ecossistema pode ser explorado por um atacante. Isso pode ocorrer para subverter o sistema, invadir ou tentar vazar informações.
Dentro dessa área, conforme temos mais contato, seja trabalhando em uma empresa, abrindo nosso próprio negócio ou realizando trabalhos autônomos, é fundamental, em qualquer contexto, ter em mente todo o ecossistema. Isso é importante tanto na hora de realizar um ataque, como, por exemplo, ao usar uma vulnerabilidade específica para obter acesso a um servidor, quanto na defesa, ao pensar em como impedir que um atacante, que tenha comprometido um servidor ou usuário, escale seus privilégios. Cada caso é único, mas é essencial saber até onde conseguimos defender ou atacar.
Um ponto crucial quando se trata de ecossistema é que a segurança de aplicações, ou a atuação de uma pessoa profissional da nossa área, é agnóstica em relação a tecnologias e linguagens. Muitas vezes, vemos discussões em redes sociais sobre qual linguagem é melhor, seja por questões de performance ou tipagem. No entanto, na segurança da informação, essas preferências não são tão relevantes. Quando trabalhamos em uma empresa, é comum que as tecnologias já tenham sido escolhidas antes de nossa chegada, especialmente se formos iniciantes ou estivermos migrando de outra área.
A adaptabilidade é essencial. Mesmo que tenhamos preferências, é importante nos adaptarmos, pois podemos encontrar vulnerabilidades em repositórios escritos em diferentes linguagens, como Go, Python, C#, ou até mesmo COBOL. Portanto, ao nos propormos a atuar na área de segurança e tornar um ecossistema seguro, devemos deixar de lado preconceitos em relação a linguagens e tecnologias.
Avançando na discussão sobre ecossistemas, vamos agora focar no front-end. A principal característica do front-end é o que chamamos de client-side rendering (renderização do lado do cliente). Isso ocorre porque, na maioria das vezes, o front-end é renderizado no navegador. Quando acessamos um site, qualquer que seja, o navegador é responsável por essa renderização. O front-end é conhecido por seu foco na experiência do usuário. Pessoas desenvolvedoras de front-end geralmente têm uma mentalidade voltada para layout, navegação e organização, trabalhando em estreita colaboração com equipes de UX e UI. Portanto, o foco está na interface.
É importante ter em mente as linguagens mais comuns no front-end, conhecidas como a famosa stack do front: JavaScript, CSS e HTML. O JavaScript, em particular, não é utilizado apenas em sua forma pura, mas também com suas bibliotecas, versões e frameworks. Este é um panorama geral do front-end, de forma resumida, para que possamos ter isso em mente ao discutirmos sobre ele.
Falando agora sobre os riscos comuns no front-end, geralmente, ataques maliciosos têm como objetivo roubar informações armazenadas pelo navegador. Se um atacante conseguir roubar a sessão ou um token de sessão, ou qualquer dado sensível que o navegador tenha armazenado, isso é vantajoso para ele. Muitas vezes, não depende apenas de enviar um link, mas sim de encontrar uma vulnerabilidade no código da aplicação, na biblioteca ou até mesmo no navegador. Um agente malicioso pode explorar essa vulnerabilidade para roubar a sessão e realizar o que chamamos de account takeover (impersonação), assumindo o controle da sessão e se passando por outra pessoa.
Em um cenário ideal, apenas o cookie de sessão não seria suficiente, pois haveria uma verificação de dupla autenticação. Essa verificação pede uma segunda confirmação para garantir que a pessoa é realmente quem diz ser. Por exemplo, ao realizar uma operação sensível, pode ser solicitado que insira um código enviado por e-mail. Esse tipo de verificação impede que um agente malicioso se aproveite do cookie de sessão roubado, evitando transferências maliciosas de dinheiro sem o conhecimento da vítima.
Agora, vamos avançar para o panorama do back-end. O back-end é diferente do front-end porque trabalha na parte "de trás" da aplicação, ou seja, a parte que não é visível para o usuário. O termo utilizado na área de TI para isso é server-side rendering.
Quando acessamos uma aplicação, como o Google ou qualquer outra que venha à mente, algumas operações ocorrem na parte que não vemos, que é a parte do servidor. Isso inclui lógica de aplicação e validações que não podem ser realizadas no front-end. Por exemplo, quando enviamos nossa senha, ela é enviada para o servidor para validar se está correta. Se essa validação fosse feita no front-end, haveria um grande problema. Por isso, chamamos esse processo de server-side rendering. É importante termos isso em mente, pois algumas vulnerabilidades se concentram nessa área, já que o back-end está relacionado ao funcionamento da aplicação.
No back-end, podemos nos referir à performance, à maneira como os dados são estruturados, à lógica de negócio ou às comunicações internas que não percebemos no dia a dia, mas que existem para validar a lógica mencionada anteriormente e otimizar o sistema quando há uma grande carga de usuários. Existem também outras especificidades de negócios que desconhecemos. As linguagens mais comuns no back-end incluem Java, Golang, PHP e Python, embora esta última também seja usada no front-end.
Ao expandirmos sobre os riscos do back-end, uma das maiores prioridades de agentes maliciosos é subverter a lógica aplicada. Por exemplo, em um e-commerce, ao aplicar um cupom de desconto, seria problemático se conseguíssemos aplicá-lo duas vezes, seja inserindo-o duas vezes no campo de cupom ou usando uma ferramenta para enviar a requisição duas vezes. Agentes maliciosos tentam encontrar essas falhas de lógica para obter vantagens, como um desconto maior ou acesso não autorizado a funcionalidades.
Além da lógica, existem implementações e validações vulneráveis. Por exemplo, ao preencher um cadastro, se inserirmos caracteres como ponto, ponto, barra, a aplicação deveria aceitar isso? Muitas vezes, faltam validações ou elas não são completas, ou ainda, são versões vulneráveis que comprometem o servidor. É crucial pensarmos nesses riscos, não apenas para o back-end, mas também para o front-end, APIs e navegadores.
Ao discutirmos riscos, devemos aplicá-los a todas as áreas mencionadas, considerando a empresa em que trabalhamos ou exercícios em plataformas de segurança. É importante desenvolver uma mentalidade voltada para identificar riscos potenciais em aplicações, o que é fundamental na área de segurança.
O curso Segurança em Aplicações Web: Proteção contra vulnerabilidades possui 397 minutos de vídeos, em um total de 111 atividades. Gostou? Conheça nossos outros cursos de Segurança em DevOps, ou leia nossos artigos de DevOps.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Matricule-se no plano PLUS e garanta:
Mobile, Programação, Front-end, DevOps, UX & Design, Marketing Digital, Data Science, Inovação & Gestão, Inteligência Artificial
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você participa de eventos exclusivos, pode tirar dúvidas em estudos colaborativos e ainda conta com mentorias em grupo com especialistas de diversas áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Para estudantes ultra comprometidos atingirem seu objetivo mais rápido.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.
Conecte-se ao mercado com mentoria personalizada, vagas exclusivas e networking estratégico que impulsionam sua carreira tech para o próximo nível.