3.3 – Identificação do Browser
Código 3.1 Exemplo de código JavaScript embebido em HTML
Quando o browser interpreta o HTML de uma determinada página Web, para permitir que o utilizador a visualize, também interpreta o código JavaScript e executa-o. Isto permite correr código directamente no browser do cliente. Algumas aplicações Web, como por exemplo o Gmail6, tiram partido desta característica para tornar as interacções com o utilizador mais
rápidas, conseguindo um tempo de resposta mais curto, processando tudo localmente e enviando apenas os pedidos necessários ao servidor. Outra característica do JavaScript é que
6 Serviço de correio electrónico gratuito que pertence à Google. Website disponível em http://mail.google.com.
<html>
<head><title>simple page</title></head>
<body>
<script type=”text/javascript”>
document.write(‘Hello World!’);
</script>
</body>
</html>
16 User Tracking
permite interacção directa com o DOM, Document Object Model. O DOM é uma forma convencionada de representar objectos, usado em HTML bem como em outras linguagens. Usando JavaScript é possível aceder a toda a informação que nele está armazenada (vários campos com definições do browser e da máquina), detectar eventos (movimentos e cliques do rato, input do teclado) e ainda despoletar eventos (através da detecção de outros eventos que os despoletam ou recorrendo a timers). Esta é uma ferramenta muito poderosa mas não deve ser o único meio utilizado para capturar informação sobre o utilizador uma vez que este pode optar por desligar o JavaScript, isto é, definir no seu browser que o código JavaScript embebido nas páginas HTML não deve ser interpretado. Muitas páginas e serviços disponíveis actualmente na Web funcionam utilizando esta tecnologia e não correm devidamente se o JavaScript for desligado, mesmo assim, o cenário que foi proposto para este trabalho indica claramente que um utilizador que pretenda cometer Click Fraud fará os possíveis para não ser identificado e assim é esperado que, não necessitando de JavaScript para cometer a fraude, o desligue. No entanto, muitos dos serviços de publicidade online actualmente utilizam JavaSript e, nestes casos, para que sejam geradas transacções o JavaScript tem que estar ligado. Uma vez que para a visualização da maior parte da publicidade online é necessário permitir a execução de JavaScript esta foi a linguagem adoptada para programar a ferramenta de extracção de dados da AuditMark, o JIC.
Flash — A abreviatura Flash é utilizada como referência ao Flash Player da Adobe que é
um software que permite criar e reproduzir animações e vídeos. Utilizado juntamente com Web browsers permite correr animações e vídeos em páginas Web. Actualmente o software de reprodução pode já vir incluído em alguns browsers ou está disponibilizado como uma extensão ou plug-in. O Flash suporta uma linguagem de scripting chamada ActionScript que se assemelha ao JavaScript em termos de capacidades. Ambas as linguagens descendem de uma outra linguagem a que se deu o nome de ECMAScript. Tal como o JavaScript, o Flash corre no browser do utilizador. Usando o Flash tem-se acesso a algumas configurações da máquina do cliente, sobretudo relacionadas com definições necessárias para serviços multimédia como existência de camera ou microfone, capacidades de reprodução de vídeo e áudio, etc. Estes dados são capturado pelo JIC através da utilização de uma ronda que inclui um objecto Flash. O Flash tem ainda, por omissão, permissões de escrita no disco de ficheiros de pequeno tamanho: os Local Shared Objects (LSO). Este mecanismo pode ser aproveitado para implementar cookies Flash.
Cookies — Desde a sua invenção os cookies estiveram sempre envolvidos em grande polémica e controvérsia. Muitas vezes a discussão gerada em torno desta técnica era baseada em conceitos errados; acreditava-se que através de cookies se podia aceder remotamente a informação privada, introduzir vírus e código malicioso nas máquinas, etc. Cookies são
17
pequenos ficheiros de texto, únicos, criados por servidores Web e que são enviados e armazenados localmente nos discos dos clientes [23]. Quando um utilizador visita pela primeira vez um website, envia um pedido ao servidor respectivo. Na resposta ao pedido, o servidor pode incluir o cookie que ficará então armazenado na máquina do utilizador. Enquanto o cookie não expirar ou for apagado, o browser do utilizador enviará uma cópia em cada novo pedido a ser feito aquele servidor.
Existem diversas funcionalidades que podem ser implementadas recorrendo a cookies. A utilização mais simples é a de identificação de um browser ao longo de várias visitas, podendo-se contar quantas visitas foram efectuadas e quando, a partir da data nos registos do servidor Web. Salienta-se o facto de que apenas é possível identificar o browser. Mesmo que seja utilizado na mesma máquina, outro browser irá armazenar noutro local os seus próprios cookies para cada website visitado que os implemente. Uma outra aplicação consiste em usar cookies para armazenar informação sobre as preferências do utilizador naquele site, ou armazenar itens vistos ou adicionados num carrinho de compras em sites de vendas online. De qualquer forma, toda a informação armazenada nos cookies provém do servidor ou foi cedida pelo utilizador, ou seja, a única forma de conterem informação privada do utilizador é se este a fornecer [24].
Os cookies tradicionalmente são implementados em HTTP, passando a ser incluidos no cabeçalho HTTP de todos os pedidos que sejam feitos ao servidor que os originou. Existe a opção em cada browser para não os aceitar e, de facto, sabe-se que muitos utilizadores rejeitam ou apagam regularmente os seus cookies [6,11,23,24,25]. De facto, devemos considerar que a aplicação de cookies, para ter sucesso, exige a cooperação da parte do utilizador [9]. No entanto, existe a também possibilidade de criar mecanismos semelhantes recorrendo a outras técnicas como o JavaScript ou mesmo o Flash, utilizando os LSO como já foi mencionado anteriormente. A este tipo de cookie dá-se o nome de cookies de aplicação e, desta forma, mesmo que o utilizador não aceite os cookies HTTP, poderá descarregar e guardar ficheiros semelhantes se tiver permitido o uso de scripts. Os cookies de aplicação apresentam algumas vantagens, em termos de potencial para user-tracking, relativamente aos cookies HTTP originais: permitem geralmente mais espaço de armazenamento em disco, são mais difíceis de apagar e, uma vez que são menos conhecidos para os utilizadores, a percentagem de utilizadores que os elimina frequentemente é menor. Uma outra vantagem advém da forma como os browsers correm estas aplicações: geralmente são instalados plugins para cada browser que fazem a ligação com a aplicação que é partilhada por todos os browsers. Desta forma, para um dado domínio, o mesmo cookie de aplicação pode ser acedido, mesmo que o utilizador mude de browser.
18 User Tracking
Cada website apenas tem acesso aos cookies enviados pelo seu próprio servidor, segundo a política da mesma origem7. No entanto, existe ainda uma abordagem diferente que utiliza
cookies para seguir utilizadores não apenas nas visitas a um único site mas um conjunto de sites: cookies de terceiros. Traduzido do termo em Inglês third party cookies, este método tira partido da forma como as páginas são construídas em HTML, utilizando Web bugs para redireccionar o utilizador, colocando-o, sem que ele se aperceba, a enviar um pedido a outro servidor diferente. Este método será explicado com mais detalhe na próxima secção. Este tipo de cookies é bem conhecido e existe a possibilidade de os desligar independentemente dos cookies normais, gerados pelos servidores da própria página. Esta é uma opção que um grande número de utilizadores toma [10].
Web bugs — Quando o browser de um utilizador descarrega uma página para visualização
são feitos um conjunto de pedidos ao servidor, um para cada elemento da página. No HTML é definido a localização de cada elemento. Através da introdução de algumas linhas de código numa página Web é possível levar o utilizador a fazer um pedido para outro servidor.
Este método é muito relevante para este trabalho uma vez que permite, com a introdução de pouco código nos servidores de uma empresa auditada, obrigar todos os utilizadores que visitem as suas páginas a fazerem pelo menos um pedido por cada página, a um servidor controlado pela empresa auditora. A 122HFigura 3.1 representa um esquema do método em que
se pode ver o conteúdo HTML a ser pedido ao servidor do domínio e um outro conteúdo embebido no HTML a ser pedido ao servidor de monitorização.
Figura 3.1 - Método de redireccionar utilizador
Geralmente, um Web bug é implementado como uma imagem transparente ou da cor do fundo da página, de tamanho 1x1 pixel, de forma a não ser visível para o utilizador. Um exemplo desta implementação pode ser observado no exemplo de 123HCódigo 3.2. Embora fora do
contexto deste trabalho, é importante referir que os Web bugs podem ser utilizados da
7 A Política da mesma origem exige que apenas o website que armazena informação no browser pode mais tarde ler ou modificar essa informação [7].
19
mesma forma em mensagens de correio electrónico e até em documentos do Microsoft Office [23]. Outro facto importante é que é possível utilizar o mesmo método descrito para os Web bugs implementados com imagens para outros tipos de elementos, que podem estar presentes em páginas Web. Por exemplo, pode ser chamado código JavaScript que se encontra em outro servidor que não o servidor que controla as páginas que estamos a visitar. Existem ainda outros métodos que permitem redireccionar o utilizador para que ele faça pedidos a outros servidores; por exemplo, através de JavaSript é possível abrir uma janela pop-up para uma página guardada noutro servidor e fechar a janela imediatamente, sem que seja perceptível para o utilizador [7].