Verifique Secure, HttpOnly e SameSite em cookies
A segurança de um cookie depende de pequenos atributos que podem ser omitidos facilmente durante mudanças de configuração.
Executar grátis
Este verificador lê um valor de cabeçalho Set-Cookie, confirma que ele começa com nome e valor e informa se Secure, HttpOnly e SameSite estão presentes. Ele também retorna uma lista objetiva dos atributos ausentes, facilitando revisões, implantações, testes e pipelines de CI. A análise é determinística, ignora diferenças entre maiúsculas e minúsculas nos nomes dos atributos e não faz solicitações de rede.
O que o verificador examina
Cole o valor de um único cabeçalho de resposta Set-Cookie, começando pelo nome e valor do cookie. O verificador separa o primeiro par name=value dos atributos delimitados por ponto e vírgula. Em seguida, procura Secure, HttpOnly e SameSite sem depender de capitalização. O resultado apresenta um booleano para cada proteção, uma lista ordenada dos atributos ausentes e o resumo `all_present`. Essa saída atende tanto à inspeção humana quanto a regras automatizadas de entrega. A ferramenta verifica somente a presença desses atributos; ela não afirma que o escopo, a duração, o desenho ou o comportamento da aplicação sejam seguros. Portanto, um resultado completo representa uma verificação específica de configuração, e não uma avaliação integral de segurança web.
Como interpretar cada atributo
Secure orienta clientes compatíveis a enviar o cookie somente por transporte seguro. HttpOnly impede que o JavaScript comum do cliente leia o cookie pelas API habituais do navegador, reduzindo caminhos para extrair um token de sessão. SameSite controla quando o navegador inclui o cookie em diferentes contextos de requisições entre sites e costuma integrar defesas contra falsificação de requisições. O verificador informa a presença, mas não escolhe a política SameSite correta, pois Strict, Lax e None atendem a necessidades distintas. Uma integração entre sites, por exemplo, pode exigir SameSite=None junto com Secure. Avalie os booleanos considerando a finalidade do cookie, a sensibilidade da autenticação, o suporte dos navegadores e os fluxos entre sites previstos.
Uso no desenvolvimento e no CI
Execute a análise com valores Set-Cookie representativos capturados em testes da aplicação, na configuração do proxy reverso ou na saída do framework. Em um teste automatizado, interrompa o build quando `all_present` for falso ou implemente uma política específica usando os três booleanos e `missing_attributes`. Como o analisador é determinístico e não usa rede, a mesma entrada produz a mesma saída no navegador e na API. Envie apenas um cabeçalho por solicitação, pois combinar vários Set-Cookie gera ambiguidades. Uma entrada sem o par name=value inicial é rejeitada como inválida. Após corrigir o servidor, teste novamente a resposta realmente emitida, já que middleware, proxy, CDN ou componentes de autenticação podem adicionar, remover ou reescrever atributos.
Casos de uso
Revisar cookies de autenticação
Verifique um cookie de sessão emitido no login e identifique imediatamente qualquer um dos três atributos ausentes.
Adicionar uma regra de segurança ao CI
Envie à API um valor Set-Cookie obtido em um teste de integração e interrompa o pipeline quando `all_present` for falso.
Validar alterações no proxy
Compare cabeçalhos depois de mudar um proxy reverso ou uma CDN para detectar um atributo perdido durante a reescrita.
Perguntas frequentes
Quanto custa a verificação?
Cada solicitação de API custa US$ 0,002. A versão no navegador pode ser executada localmente sem enviar o cabeçalho a um serviço de rede.
O valor de SameSite é validado?
Não. A ferramenta informa se SameSite está presente. A escolha entre Lax, Strict e None depende do comportamento entre sites necessário.
Os nomes dos atributos diferenciam maiúsculas de minúsculas?
Não. Secure, HttpOnly e SameSite são reconhecidos com qualquer combinação de letras maiúsculas e minúsculas.
Posso verificar vários cabeçalhos Set-Cookie de uma vez?
Não. Envie um único valor Set-Cookie por solicitação para obter um resultado inequívoco para cada cookie.
Por que minha entrada foi rejeitada?
O valor deve começar com um nome de cookie não vazio, seguido por um sinal de igual e pelo valor, antes dos atributos separados por ponto e vírgula.
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/security/cookie-attribute-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"session_id=abc123; Path=/; Secure; HttpOnly; SameSite=Lax"}'const res = await fetch("https://api.kit.forhosting.com/security/cookie-attribute-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "session_id=abc123; Path=/; Secure; HttpOnly; SameSite=Lax"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/security/cookie-attribute-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "session_id=abc123; Path=/; Secure; HttpOnly; SameSite=Lax"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/security/cookie-attribute-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"session_id=abc123; Path=/; Secure; HttpOnly; SameSite=Lax"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"session_id=abc123; Path=/; Secure; HttpOnly; SameSite=Lax"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/security/cookie-attribute-check", 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
{
"text": "session_id=abc123; Path=/; Secure; HttpOnly; SameSite=Lax"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "security.cookie_attribute_check",
"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.
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. |