Javascript: Facebook Status Sniffing with Abuse HTTP Status

Oggi vi parlo di un argomento molto interessante: Come è possibile capire se un visitatore, del nostro sito web, è loggato sui due social network di maggior successo: Facebook e Twitter. È possibile, infatti, tramite una tecnica denominata “Abuse HTTP Status” e javascript capire se un utente ha effettuato il log-in (e quindi possiede cookies validi sul PC) su uno dei famosi portali.

Ho parlato, nell’anteprima di questo articolo, di “Abuse HTTP Status”; bene parto con il spiegarvi di che tecnica si tratta.

Anzitutto cos’è l’HTTP Status o Stato HTTP: bisognerebbe partire dai fondamenti della comunicazione del protocollo HTTP, ma per ovvi limiti di spazio vi spiego brevemente come funziona una richiesta web da parte del browser ad un server per iniziarvi al discorso (per gli esperti: lo spiego con parole non tecniche, quindi non voletemi male! :-) ).

Quando noi scriviamo un URL nel nostro browser e clicchiamo su invio il software manda una richiesta HTTP, appunto, al server sul quale è ospitato il sito. La richiesta è simile a questo codice:

Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3

Accept-Encoding:gzip,deflate,sdch

Accept-Language:it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4

Connection:keep-alive

Cookie: XXXXXXXXXXXXXXX

Host:www.orebla.it

Referer:http://www.orebla.it/

User-Agent:Mozilla/5.0 (Windows NT 6.0) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.25 Safari/534.24

A sua volta il Server risponderà con un messaggio, simile a questo:

Status Code: 200 OK

Connection:Keep-Alive

Content-Encoding:gzip

Content-Type:text/html

Date:Wed, 30 Mar 2011 12:28:44 GMT

Keep-Alive:timeout=1, max=64

Server:Apache

Transfer-Encoding:chunked

Vary:Accept-Encoding

Come potete vedere avviene uno scambio di informazioni fra il browser ed il server. Di tutte queste righe quello che interesse a noi, per questo guida, è: “Status Code: 200 OK”. Questo è l’HTTP Status o Stato HTTP o Codice di Stato HTTP. Insomma questo messaggio può essere differente per diverse situazioni. Potete trovare un bel elenco su Wikipedia: Elenco dei codici di stato HTTP. Diciamo che al momento vi interessa sapere che gli stati più “utilizzati” sono 200, 401, 403 e 404.

Il primo (200, nda) indica che il server ha trovato la pagina e che è tutto OK; gli stati 401 e 403 indicano che il server potrebbe avere la pagina ma che non possiamo accedervi in quanto non abbiamo i permessi necessari; infine il tanto famoso 404 che indica un bel errore di “pagina non trovata”, penso che tutti conoscete quest’ultimo!

Fatta la premessa spieghiamo la tecnica del “Abuse HTTP Status Code“.

Se noi ci procuriamo una pagina di Facebook alla quale possiamo accedere solo se loggati e poi la visitiamo, dopo aver effettuato l’accesso, il server ci risponderà con uno stato “200, OK”! Se invece, sempre con la stessa pagina, la visitiamo SENZA aver effettuato l’accesso il server ci risponderà con un bel 401 o 403/Forbidden!

Per tanto ci basta analizzare questi dati per capire se un utente ha effettuato l’accesso o meno su Facebook o Twitter.

Qui ci viene in aiuto il javascript con le funzioni “src”, “onload” e “onerror”. Per caricare uno script, di norma, il codice è il seguente:

<script type="text/javascript"
src="http://xxx.com/pagead/show_ads.js"> 
</script>

A questo codice possiamo aggiungere due argomenti per capire se tale script viene o meno caricato:

<script type="text/javascript"
src="http://xxx.com/pagead/show_ads.js"
onload="si_caricato()"
onerror="non_caricato()"
> 
</script>

Come potete vedere in base alla risposta del Server noi possiamo richiamare una funzione specifica! Questo ci aiuta a capire, sempre tornando al discorso di prima, se un utente ha effettuato l’accesso a Facebook o Twitter ed è connesso!

Provate a visitare questa pagina: Facebook e Twitter Status Sniffing with Abuse HTTP Code Status.

Come vedete la pagina vi segnala il vostro stato sui due portali di Social Network!

Purtroppo, tale script funziona solo su Firefox 4.0 e Chrome 11.x. Mentre su Opera 11, IE 9 e Safari tale codice non funziona!

Fonte di questo mio articolo sono: il sempre ben informato Gianni Amato e lo scopritore di tale “stranezza” Mike Cardwell.

All’interno dei commenti, sul post di Cardwell, un utente ha inserito un esempio su come sia possibile “sniffare” lo stato del visitatore anche su IE 9 utilizzando un altro metodo sempre su Javascript, per i più smanettoni ecco il codice:

<script> 

function check(){
var scrollPos = document.getElementById('box').scrollTop;

if(scrollPos > 0)
alert("You are Authenticated to Facebook!");

else
alert("You are NOT Authenticated to Facebook!");

}

setTimeout("check()", 2000);

</script>

<div id="box" style="border : solid 2px #ff0000; background : #000000; padding : 4px; width : 200px; height : 450px; overflow : auto;" >

<iframe src="http://sbx.facebook.com/mobile/iframe_emails.php#pagefooter_copyright" height="500px"/>

</div>

14 pensieri su “Javascript: Facebook Status Sniffing with Abuse HTTP Status

  1. dhs truffa

    Il Glocal Income ha iniziato un sistema grazie al quale chiunque
    lo voglia può dare vita alla libera attività senza dover essere
    sottoposto al rischio di impresa. L’attività del socio partner del ClubShop è autonoma, e si esercita esclusivamente dalla propria abitazione. Tale convenienza è stata scelta da lavoratori provenienti da tutto il mondo. L’attività da svolgere è molto chiara e quando nei siti web utenti anonimi accusano il ClubShop truffa, veramente non si comprende le ragioni, in quanto l’assenza di motivi veri, fa pensare alla cattiva fede degli personaggi.

    Replica
  2. anonymous my company

    Hey! I know this is kind of off topic but I was wondering if you knew where
    I could get a captcha plugin for my comment form? I’m using the same blog platform as yours and I’m having trouble finding
    one? Thanks a lot!

    Replica
  3. free movies to watch old movie posters

    It is perfect time to make some plans for the future and
    it’s time to be happy. I’ve read this post and if I could I wish to suggest you few interesting things or suggestions.
    Perhaps you can write next articles referring to this article.
    I wish to read even more things about it!

    Replica
  4. coconut oil

    You don’t genuinely wish to take in something which you are not sure regarding the true effects. We have been told that they lower cholesterol, but they way that they do is not healthy, as it ends up collecting in the liver. All you need do is stop cooking with vegetable oils, and start cooking with coconut oil.

    Replica
  5. almond oil uses

    Cyanide discharge can and has happened if the enzyme beta-glucuronidase is introduced.
    Because the under eye area is one of the first places to start showing signs of aging, the moisturising
    action of this oil is especially beneficial here. Unlike
    some treatment products, almond oil (being completely natural), can be used
    as frequently as you wish.

    Replica
  6. Vaughn

    You tend to spend an astronomical amount on therapies, medicines, nutritional supplements and so on.
    For liquid filled transformers the approach is similar.

    With them, you can reap the full benefits of
    almond oil without any adverse effects.

    Replica
  7. Lucretia

    Impressive blog post and very interesting stuff you have here!
    I definitely learned a lot from reading through several of your earlier posts
    as well and decided to make a comment on this one! Many thanks!

    Replica
  8. solar laptop charger

    Hi, you have a Great section of content. I just stumbled upon your website.
    The clarity in your post is just excellent. Anyway I will be subscribing to your website, if possible !
    I hope its ok to borrow a few of your wonderful ideas! You
    really have a gift for writing. Thanks.

    Replica
  9. Nasdaq:nflx

    Hi I am so glad I found your webpage, I really found you by mistake, while I
    was looking on Digg for something else, Anyways I am here now and would just
    like to say thank you for a fantastic post and
    a all round exciting blog (I also love the theme/design), I don’t have time to go through it all at the
    moment but I have book-marked it and also added your RSS feeds, so when I have time I will be back to read much more,
    Please do keep up the fantastic jo.

    Replica

Tu cosa ne pensi?