Crooked Style Sheets è un interessante Proof of concept dedicato alle attività di tracciamento e analisi delle pagine Web, nonché delle interazioni degli utenti con queste ultime, effettuate utilizzando unicamente CSS. La sperimentazione è mirata a dimostrare che alcune informazioni di base possono essere rilevate senza la necessità di ricorrere a script JavaScript.
CSS permetterebbe quindi di accedere ai dati riguardanti la risoluzione dello schermo di un utilizzatore (nel caso in cui la finestra del browser sia in modalità full screen), il browser corrente o il suo engine. Nello stesso modo vi sarebbe la possibilità di scoprire se un utente ha installato un determinato font e sfruttare questa informazione per capire quale sia il suo sistema operativo di riferimento.
Ma le opportunità per il tracking sarebbero ancora più elevate, arrivando anche all'individuazione di alcuni comportamenti dell'utente. E' per esempio possibile una semplice procedura di rilevazione dei click sui link presenti in una pagina Web, così come si potrebbe scoprire su quali elementi l'utente ha posizionato il cursore del mouse. Il metodo hover risulterebbe poi utile per tracciare le risorse collegate a link esterni che sono stati visitate.
Crooked Style Sheets è stato concepito a partire dalla semplice idea di inserire un'immagine prelevata da una risorsa esterna utilizzando la proprietà url("..");, componente che viene caricata soltanto nel momento in cui viene richiesta in seguito ad azioni specifiche, come per esempio il click su un link. Ciò permette di creare un selettore CSS finalizzato a richiamare un determinato URL in seguito al click:
#link2:active::after {
content: url("track.php?action=link2_clicked");
}
Fatto questo diventano possibili procedure di browser detection basate su @supports Media-Query che consente di individuare proprietà che sono proprie di specifici browser. Nel contempo si potrebbero effettuare attività di font detection, creando una nuova famiglia di font e forzando il sistema a caricare quelli disponibili, di input detection e di misurazione dei tempi di permanenza del cursore su un elemento.