Existe alguma maneira de ler um cookie seguro com JavaScript?
Tentei fazer isso usando document.cookie
e, pelo que posso ver neste artigo sobre cookies seguros e sinalizador HttpOnly , não consigo acessar um cookie seguro dessa forma.
Alguém pode sugerir uma solução alternativa?
javascript
security
cookies
tzam
fonte
fonte
Respostas:
Navegadores diferentes permitem medidas de segurança diferentes quando o sinalizador HTTPOnly é definido. Por exemplo, o Opera e o Safari não impedem que o javascript grave no cookie. No entanto, a leitura é sempre proibida na versão mais recente de todos os principais navegadores.
Mas o mais importante, por que você quer ler um
HTTPOnly
cookie? Se você for um desenvolvedor, apenas desative o sinalizador e certifique-se de testar seu código para xss. Eu recomendo que você evite desabilitar este sinalizador, se possível. OHTTPOnly
sinalizador e o "sinalizador seguro" (que força o envio do cookie por https) sempre devem ser definidos.Se você for um invasor , deseja sequestrar uma sessão . Mas existe uma maneira fácil de sequestrar uma sessão, apesar da
HTTPOnly
bandeira. Você ainda pode andar na sessão sem saber a id da sessão. O worm Samy do MySpace fez exatamente isso. Ele usou um XHR para ler um token CSRF e, em seguida, executar uma tarefa autorizada. Portanto, o invasor pode fazer quase tudo que o usuário conectado pode fazer.As pessoas têm muita fé na
HTTPOnly
bandeira, o XSS ainda pode ser explorado. Você deve configurar barreiras em torno de recursos sensíveis. Por exemplo, o campo de alteração de senha deve exigir a senha atual. A capacidade de um administrador de criar uma nova conta deve exigir um captcha, que é uma técnica de prevenção de CSRF que não pode ser facilmente contornada com um XHR .fonte
O ponto principal dos cookies HttpOnly é que eles não podem ser acessados por JavaScript.
A única maneira (exceto para explorar bugs do navegador) para seu script lê-los é ter um script cooperativo no servidor que lerá o valor do cookie e o ecoará de volta como parte do conteúdo da resposta. Mas se você pode e deve fazer isso, por que usar cookies HttpOnly em primeiro lugar?
fonte
Uma das formas é usar o safari web inspector, e na aba de armazenamento você pode ver todos os cookies, httpOnly ou não, e apenas selecionar o cookie Command + C, para copiá-lo.
Depois de obter a string, você pode analisá-la facilmente de volta com qualquer analisador de cookies ou javascript simples.
fonte