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:
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áginaSAMEORIGIN
= 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
:
Podemos realizar o bypass de WAF que verificam o X-FORWARDED-FOR, utilizando o seguinte padrão no nosso header request:
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)
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.
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
Last updated