HTML5 - Problemas de seguranรงa do armazenamento local
Intro O papel do browser – Gere sistemas complexos (gdocs, fb) HTML5 apresenta (tags, geo, offline, local storage) O armazenamento local de dados (local storage) Guardar informação do lado do cliente! C/ neste artigo...
1 - Identificar os problemas de segurança relacionados com o armazenamento local de informação. 2 - Recomendar conjunto de boas práticas que minimizam a os riscos envolvidos na sua utilização.
Out.1994 Mosaic Netscape (beta) → Armazenamento Local
Cookies
●
Pares nome-valor
●
4KB
●
session_id = BF236BAE48734FDE6523
Armazenamento local . HTML5 Session Storage
Local Storage
Capacidade de armazenamento
4MB
4MB
Lógica de implementação
Informação armazenada não é enviada em cada pedido (comunicação cliente-servidor)
Informação armazenada não é enviada em cada pedido (comunicação cliente-servidor)
Menos processamento-servidor Menor tráfego de dados
Menos processamento-servidor Menor tráfego de dados
Acesso à Informação
Limitado à Sessão que a criou
A informação persiste ao fecho da janela/browser Várias janelas do browser
Exemplo
http://joaosantacruz.com/html5/localstorage/sessionStorage/ http://joaosantacruz.com/html5/localstorage/localS
Riscos de Implementação ●
Risco de Leitura Permitir que o “website atacante” consiga consultar dados no “website vítima” pode resultar em fuga de informação de informação (information spoofing).
●
Risco de Escrita Permitir que o “website atacante” consiga escrever dados no “website vítima” pode resultar em fraude de informação (information spoofing).
Só o domínio responsável pela criação do armazenamento local, pode aceder à informação contida no mesmo.
Tipos de ataque ●
DNS spoofing Com a fraude de DNS, não é possível garantir que um host que diz pertencer a certo domínio, faz realmente parte desse domínio.
●
Cross-directory Ocorre quando dois websites partilham um domínio, sendo diferenciados por um sub-domínio ou sub-pasta (e.g. vitima.no.sapo.pt e atacante.no.sapo.pt). Não aconselhado em sistemas de domínio partilhado.
●
Cross-site scripting (XSS) O XSS é uma vulnerabilidade muito comum em websites e que permite aos atacantes, injectar código que irá correr directamente nos browsers de outros utilizadores que estejam a consultar o website infectado. Os efeitos dependem do tipo de informação em questão e de possíveis implementações de “contra-ataque”.
Boas práticas de implementação ●
Não guardar dados sensíveis
●
Informar o utilizador
●
Não confiar nos dados
●
Utilização de Secure Sockets Layer (SSL)
●
Evitar difusão de varNames
●
Codificação de dados
●
Prevenir infecções por XSS
(Nomes únicos → username ou passwordsOffline)
Conclusão ●
HTML5 facilita bastante o desenvolvimento e criação de novas funcionalidades
●
●
Se mal implementado → introduz vulnerabilidades A utilização consciente da tecnologia é fundamental para garantir a segurança dos dados do utilizador developers & users !!