0.2 — Cliente e servidor: a conversa que sustenta a web

Imagine um restaurante:

  • Você (o cliente) faz um pedido ao garçom.
  • A cozinha (o servidor) prepara e devolve o prato.
  • Vocês se comunicam por um idioma combinado (o cardápio, a forma de pedir).

Na web é idêntico:

   VOCÊ (cliente)                          O SITE (servidor)
   ┌───────────────┐    pedido (request)   ┌──────────────────┐
   │  navegador     │ ────────────────────▶ │  aplicação         │
   │  ou curl       │                        │  (código + banco)  │
   │               │ ◀──────────────────── │                    │
   └───────────────┘    resposta (response) └──────────────────┘
  • Cliente = quem pede. Pode ser seu navegador (Chrome), um app de celular, ou uma ferramenta de terminal como o curl (que é um "navegador sem tela": faz o pedido e mostra a resposta crua).
  • Servidor = quem responde. É o computador onde o site roda o código e guarda os dados.
  • O idioma combinado entre eles é o HTTP (HyperText Transfer Protocol). É só um formato de mensagem — nada mágico.

Por que isso importa para segurança: o cliente está na mão do atacante. Ele pode mandar qualquer pedido, com qualquer conteúdo — não só o que os botões do site permitem. Por isso a segurança tem que estar no servidor. Regra de ouro nº 1:

Nunca confie em nada que venha do cliente. O cliente mente.

Exemplo concreto que você vai testar: um botão "comprar" que envia preço=49,90. O atacante troca para preço=0,01. Se o servidor confiar no preço enviado pelo cliente, a loja vende de graça. O servidor tem que buscar o preço real no seu próprio banco, ignorando o que o cliente mandou.


entre para marcar esta aula como concluída.

PurpleLab // plataforma de treino ofensivo + defensivo // Fase 1 — portal dinamico