HTML de terceiros no seu site?
Esta ferramenta sanitiza HTML: remove scripts, eventos embutidos, iframes e atributos perigosos, e devolve uma marcação segura para publicar. É a barreira entre o conteúdo que chega de fora — comentários, descrições, e-mails — e a página onde ele vai aparecer. Grátis, sem cadastro, direto no navegador.
Executar grátis
Roda direto no seu navegador. Grátis, sem cadastro — seus dados não são enviados para lugar nenhum.
O risco escondido num pedaço de HTML
Um comentário de cliente, uma descrição de produto, um e-mail exibido dentro do sistema: sempre que HTML vindo de fora é mostrado na sua página, ele pode carregar mais do que formatação. Um script embutido ali executa no navegador dos seus visitantes — rouba sessão, redireciona, injeta conteúdo. É o ataque conhecido como XSS, e ele não exige invasão nenhuma: basta que alguém envie marcação maliciosa e o seu site a exiba sem limpar.
O que sai e o que fica
Saem os vetores de execução: tags de script, atributos de evento como onclick e onerror, iframes e objetos incorporados, endereços do tipo javascript:. Fica a formatação legítima: parágrafos, títulos, listas, negrito, links seguros, imagens. O texto e a aparência do conteúdo sobrevivem; a capacidade de executar código, não. De quebra, a marcação sai mais enxuta do que entrou. Se algum elemento legítimo desaparecer, é sinal de que ele se parecia demais com um vetor de ataque.
Sanitize na entrada, não na esperança
A regra de ouro da segurança de conteúdo: limpe tudo o que o usuário envia no momento em que chega, antes de gravar no banco — e não confie que o navegador ou o template vão dar conta depois. HTML já armazenado limpo é risco eliminado na raiz; HTML sujo no banco é bomba com timer, esperando a tela que esqueceu de escapar.
Sanitização no formulário, via API
No servidor, a sanitização via API entra no fluxo de cada formulário e integração: o backend recebe o HTML do usuário, chama a limpeza por US$ 0,002 por chamada — documentos de até 25 MB — e grava apenas a versão segura. Na página, a ferramenta é grátis, ilimitada e sem cadastro, útil para inspecionar e limpar trechos avulsos durante o desenvolvimento.
Casos de uso
Comentários e avaliações de clientes na loja
A loja permite formatação básica nas avaliações. Cada texto passa pela sanitização antes de ir ao banco: o cliente mantém o negrito, e a página fica livre de script escondido.
Exibir e-mails recebidos dentro do sistema
O helpdesk que a TecnoSul Soluções Digitais ME desenvolve mostra e-mails de clientes na tela do atendente. Sanitizado na chegada, o HTML da mensagem é exibido sem risco de executar nada.
Conteúdo colado do Word no CMS
Editores colam texto do Word, que traz marcação suja e imprevisível. A limpeza antes de salvar mantém a formatação essencial e elimina o resto — inclusive o que seria perigoso.
Perguntas frequentes
O que exatamente é removido?
Scripts, atributos de evento (onclick, onerror e afins), iframes e objetos incorporados, e endereços javascript: — os vetores clássicos de execução dentro de HTML. A formatação comum permanece.
Sanitizar resolve XSS de vez?
É a camada mais importante, não a única: limpar o HTML na entrada elimina o vetor mais comum, mas mantenha também o escape correto na exibição e as proteções do seu framework. Segurança boa é redundante.
A aparência do conteúdo muda?
Textos, títulos, listas, links e imagens legítimos continuam como estavam. A diferença é invisível: o que podia executar código deixa de existir.
Quanto custa?
Na página, nada — grátis, sem limite, sem cadastro. No servidor, via API, US$ 0,002 por chamada: o lugar certo para limpar tudo o que os usuários enviam.
Posso colar conteúdo interno para limpar?
Pode: na página, a limpeza roda no seu navegador, sem envio do conteúdo para servidor nenhum.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/data/html-sanitize \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/data/html-sanitize", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/html-sanitize",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/html-sanitize", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/html-sanitize", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"input": "…"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.html_sanitize",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 25 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |