HTTP Headers

HttpOnly

É um sinalizador opcional no cabeçalho de resposta Set-Cookie. Se o sinalizador estiver definido, o valor do cookie não poderá ser lido ou definido pelo cliente via JavaScript. Esse medida impede certos ataques de XSS. Abra o console do navegador (F12) e digite document.cookie, se tiver retorno, é porque o HttpOnly está setado com false.

SecureFlag

É uma outra flag opcional para cookies definida pelo servidor de aplicativos, que faz com que navegador envie cookie apenas com criptografia (como HTTPS). Dessa forma, isso protege contrar ataque de MITM, e XSS usados para roubos de cookies. Alguns ataques são realizados embutindo cookie na tag meta, por exemplo:

http://site.com/<meta http-equiv=Set-Cookie content="sessionid=abcd">

Content-Security-Policy (CSP)

Permite que os administradores do site controlem os recursos que o agente do usuário pode carregar para uma determinada página. Com algumas exceções, as políticas envolvem principalmente a especificação de origens do servidor e pontos de extremidade de script. Isso ajuda a proteger contra ataques de script entre sites (XSS)

X-Frame-Options

Pode ser usado para indicar se um navegador deve ou não renderizar uma página com as tags <frame>, <iframe>, <embed> ou <object>. Os sites podem usar isso para evitar ataques de ClickJacking, garantindo que seu conteúdo não seja incorporado a outros sites. As opções para X-Frame-Options são:

  • DENY = Impede frames na página

  • SAMEORIGIN = Permite somente frames de páginas do mesmo que tenha o mesmo domínio

DNT

Se estiver setado como 0, o usuário permite o rastreamento no site de destino. E se for 1, o usuário prefere não ser rastreado.

X-Forwarded-For

Alguns aplicativos da web possibilitam restringir o acesso com base no endereço IP do visitante. Isso é particularmente comum para interfaces de administrador. É uma boa idéia restringir essa interface aos endereços IP que são conhecidos por serem usados pelos administradores reais. Se o visitante estiver usando um proxy, o campo REMOTE_ADDR conterá o endereço do proxy em vez do visitante. Para poder ver o endereço do visitante, muitos proxies adicionam um cabeçalho à solicitação com esse endereço. Esse cabeçalho é chamado X-Forwarded-For e contém o endereço IP do cliente que se conectou ao proxy. O aplicativo da web agora pode verificar o cabeçalho X-Forwarded-For para determinar o endereço IP do cliente.

No .htaccess (PHP), geralmente vemos um trecho que pode ser contornado com o X-FOWARDED-FOR:

SetEnvIF X-FORWARDED-FOR "<ip>" AllowIP

Podemos realizar o bypass de WAF que verificam o X-FORWARDED-FOR, utilizando o seguinte padrão no nosso header request:

X-FORWARDED-FOR: 127.0.0.1,<IP_DOMAIN>,<HACKER_IP>

Accept-Encoding

O cabeçalho de requisição HTTP Accept-Encoding indica qual codificação de conteúdo, usualmente um algoritmo de compressão, o cliente está apto a entender. o servidor seleciona uma das propostas, a utiliza e informa o cliente da escolha feita com o cabeçalho de resposta Content-Encoding.

VALOR

DESCRIÇÃO

*

Aceita qualquer codificação de conteúdo ainda não listada no cabeçalho. Esse é o valor padrão se o cabeçalho não estiver presente. Isto não significa que qualquer algoritmo é suportado; meramente que nenhuma preferência é expressa

gzip

Formato de compressão usando o Lempel-Ziv coding (LZ77), com CRC de 32-bits

compress

Formato de compressão usando o algoritmo Lempel-Ziv-Welch (LZW)

deflate

Formato de compressão usando a estrutura zlib, com o algoritmo de compressão deflate

br

Formato de compressão usando o algoritmo de Brotli

identity

Indica a identidade da função (i.e. sem compressão, ou sem modificação). Esse valor é sempre considerado como aceitável, mesmo se não estiver presente

;q= (valores de peso q)

Qualquer valor é colocado em uma ordem de preferência expressada usando a quality value relativa chamada peso

X-HTTP-Method-Override

Enviando X-HTTP-Method-Override no cabeçalho, podemos alterar o tipo de verbo HTTP. No exemplo abaixo estamos acessando determinado endpoint via GET, porém estamos solicitando para nos redirecionarmos para POST. Isso existe devido a navegadores antigos, onde só aceitam GET e POST, mas precisam acessar métodos como PUT, DELETE, etc.

curl <site> -H 'X-HTTP-Method-Override: POST'

Same-Origin Policy

Bloqueio solicitações de diferentes origens. Essa verificação é feita através do protocolo (HTTP / HTTPS), Domínio e Porta.

Protegendo contra XSS

Adicione no cabeçalho HTTP x-xss-protection:"1; mode=block". Caso use o NodeJS, utilize o helmet-module para ajudar a se proteger

Sites

https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Headers
https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Basico_sobre_HTTP/MIME_types/Complete_list_of_MIME_types

# Verifica se determinado site possui um Header mal configurado
https://securityheaders.com

Last updated