Chegamos a um dos temas mais importantes de qualquer aplicação web:

segurança.

Nesta aula, vamos entender um dos ataques mais comuns da web:

Cross-Site Scripting (XSS).

🎯 Objetivo da aula

Ao final desta aula, você será capaz de:

  • Entender o que é XSS
  • Reconhecer como ele acontece
  • Identificar pontos vulneráveis no código
  • Aplicar boas práticas de prevenção
  • Escrever JavaScript mais seguro

O que é XSS?

XSS (Cross-Site Scripting) é um tipo de ataque onde:

código JavaScript malicioso é executado dentro do navegador do usuário.

Isso acontece quando uma aplicação:

  • confia em dados vindos do usuário
  • insere esses dados no HTML sem validação
XSS não ataca o servidor — ataca o usuário.

Por que XSS é tão perigoso?

Um ataque XSS pode:

  • roubar cookies e tokens
  • capturar dados digitados
  • redirecionar o usuário
  • alterar o comportamento da página

Tudo isso acontece:

sem que o usuário perceba.

Como o XSS acontece (conceito)

Imagine um campo de comentário que exibe exatamente o que o usuário digitou:

 <div id="comentarios"></div> 
 const comentario = entradaUsuario; // dado externo

document.getElementById("comentarios").innerHTML = comentario;

Se esse valor não for tratado, qualquer coisa digitada será interpretada como HTML.

Inserir dados não confiáveis com innerHTML é o erro clássico.

Tipos comuns de XSS

  • XSS Refletido — vem da URL ou formulário
  • XSS Armazenado — salvo no banco de dados
  • XSS DOM-based — acontece apenas no JavaScript

Nesta aula, focamos principalmente no XSS baseado em DOM.

Erro comum: usar innerHTML sem necessidade

❌ Evite:

 element.innerHTML = textoDoUsuario; 

✅ Prefira:

 element.textContent = textoDoUsuario; 
textContent exibe texto — não executa HTML.

Criando elementos de forma segura

Outra prática segura é criar elementos manualmente:

 const p = document.createElement("p"); p.textContent = textoDoUsuario;

container.appendChild(p);

Assim, o navegador nunca interpreta o conteúdo como código.

Nunca confie em dados externos

Dados externos incluem:

  • inputs de formulário
  • parâmetros de URL
  • dados de APIs
  • conteúdo vindo do backend
Tudo que vem de fora deve ser tratado como não confiável.

Validação vs sanitização

São coisas diferentes:

  • Validação → verifica se o dado é aceitável
  • Sanitização → remove ou neutraliza conteúdo perigoso

Idealmente:

  • valide no frontend
  • valide e sanitize no backend

Boas práticas essenciais contra XSS

  • use textContent em vez de innerHTML
  • evite montar HTML com strings
  • crie elementos via DOM API
  • nunca confie em dados externos
  • escape conteúdo quando necessário

E o backend?

Mesmo com JavaScript seguro:

  • o backend deve validar tudo
  • cabeçalhos de segurança ajudam
  • tokens devem ser protegidos
Segurança é responsabilidade de toda a stack.

XSS não é teoria

XSS está entre as vulnerabilidades mais comuns da web há anos.

Evitar XSS não é opcional — é obrigação.

Resumo da aula para nunca mais esquecer

  • XSS executa código no navegador do usuário
  • Acontece por confiar em dados externos
  • innerHTML é o vilão mais comum
  • textContent é mais seguro
  • Segurança deve ser pensada desde o início

Na próxima aula, começamos o encerramento técnico do curso com:

Introdução a testes em JavaScript.


HARDWARE

Entendendo o seu computador

O que há dentro do meu computador?

Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.

  • Gabinetes

  • Placas-Mãe

  • Processadores

  • Memória

  • Fontes

  • Drives Ópticos

  • Discos Rígidos

  • SSD

  • Placas de Som

  • Placas de Vídeo

Você Sabia?

A IBM detém o recorde de patentes em um único ano, atingindo a marca de 4186 registros no ano de 2008. Clique aqui e saiba mais sobre esta gigante do mundo da tecnologia.


A primeira versão do clássico Mega Man, para Nintendo 8 bits, tem seu recorde de pontos estabelecido em 03/11/2006, por David Archey, que cravou 2.396.700 pontos, terminando o jogo.


A empresa Universal City Studios, detentora dos direitos autorais do King Kong, processou a Nintendo logo após o lançamento de Donkey Kong, pois segundo ela, o game violava os seus direitos. Ela venceu o processo e recebeu da Nintendo uma indenização de quase 2 milhões de dólares.


O jogo Final Fantasy X para o Sony Playstation 2 vendeu, apenas no dia do seu lançamento, 1.455.732 cópias, estabelecendo um recorde de vendagem para as primeiras 24 horas de um game. Méritos da SquareSoft, que desenvolveu um excelente produto!


Nos primeiros oito dias após o lançamento do console Nintendo Wii foram vendidas 600 mil unidades. Isso equivale a quase um por segundo e estes incríveis números são referentes às vendas apenas nos EUA!