27/12/2009

Spyjax utilizar o ajax para roubar dados privados

espreitando Spyjax consiste na técnica que combinação as potencialidades do javascript e dos css para  retirar informação acerca do histórico do seu browser e guardar essa mesma informação.
Mas como funciona o Spyjax ?
Quando utiliza o seu browser já deve ter reparado que sempre que faz um clique num link e esse muda de cor e sempre que volta a ver esse link ele continua nessa mesma cor .
Pois bem isso acontece porque o seu browser guardou no seu historio esse link e sempre que abre uma pagina com esse link ele detecta e assinala com essa link com já acedido , é devido a este comportamento que esta técnica tira partido .
Na pratica é criado código javascript que introduza endereços na pagina Web e compara o seu CSS mais concretamente examina a cor que o link assume e guarda essa informação ou em cookies ou envia via essa informação de volta com os resultados.
Exemplos na de sites que utilizam esta técnica :
O primeiro é o http://www.didyouwatchporn.com/ que permite averiguar se é utilizador de sites de pornografia.
didyouwatchporn
O segundo é o http://whattheinternetknowsaboutyou.com testa os 5000 sites mais populares da internet .
whattheinternetknowsaboutyou
Estes são apenas alguns exemplo de certo que encontra ou de futuro vai encontrar mais.



Exemplos de código(Testados no Firefox 3.5.5 / Opera 10.10 / IE 8 / Chrome 3.0.1) :
function jaVisitei(url) {    
    var link = document.createElement('a');     
    link.href = url;     
    document.body.appendChild(link);     
    if (link.currentStyle) {     
        var cor = link.currentStyle.color;     
        if (cor == '#800080')     
            return true;     
        return false;     
    } else {     
        link.setAttribute("href",url);     
        var computed_style = document.defaultView.getComputedStyle( link, null );     
        if (computed_style) {     
            if (computed_style.color == "rgb(85, 26, 139)")     
                return true;     
            }     
            return false;     
        }     
        return false;     
} 
function testa()    
{     
    if(jaVisitei("http://www.jpontes.blogspot.com/")==true)     
    {     
        alert("Obrigado por visitar jpontes.blogspot.com");     
    }     
    else    
    {     
        alert("Visite jpontes.blogspot.com");     
    }     
}


Este exemplo teve inspiração nos mais exemplos nos sites http://jeremiahgrossman.blogspot.com/2006/08/i-know-where-youve-been.html e uma adaptação do mesmo no  http://www.merchantos.com/makebeta/tools/spyjax/.
(Versão utilizado biblioteca Jquery)
function jaVisitei2(url) {    
var a = $('<a></a>').attr({href: url,'class': 'checkme'}).appendTo(document.body);     
        if($(a).css('color') == '#800080' || $(a).css('color') == 'rgb(85, 26, 139)') { 
            return true;    
        }     
        else     
        {     
            return false     
            }     
}


Esta versão é a minha preferida e utiliza a biblioteca  javascript jquery ou se preferir o Mootools e podem encontra no site   http://davidwalsh.name/jquery-spyjax no qual me inspirei para este exemplo.
Como evitar e se proteger do Spyjax ?
O Spyjax não é uma técnica  perfeita pelo contrario é bastante falível basta para isso que :
  1. Não guarde histórico de navegação ou que o limpe com regularidade.
  2. Que desactive o javascript do browser .
  3. Caso tenha o Firefox 3.5 +  instalar o Link Status que permite desabilitar a aplicação de novo estilo de CSS aos links já visitados.
Referencias:

Sem comentários: