Shellrock, una nuova minaccia per la sicurezza dei server

Immagine di bankinfosecurity.com

Immagine di bankinfosecurity.com

Mi dispiace per la lunga assenza, ma negli ultimi tre mesi sono stato davvero impegnato.Probabilmente già sapete di Heartbleed, il bug nella libreria SSL più utilizzata.

Un altro grave bug è stato scoperto in questi giorni, Shellrock. Questo bug è presente in Bash, uno degli strumenti più utilizzati al mondo in quasi tutti i dispositivi unix / linux. Bash è utilizzato in Router, Server, Mac e così via … Attualmente è gia stata rilasciata la patch e tutte le principali distribuzioni Linux hanno già provveduto ad applicarla Bash. Il bug è già sfruttato, infatti è facile praticare attacchi tramite speciali richieste http verso servizi che utilizzano bash. Continue reading

Come Google Pagespeed rende più veloce questo sito

pagespeedProbabilmente già conoscete Google Pagespeed, nome che accomuna tre strumenti di Google. Questo progetto ha l’obiettivo di rendere il web più veloce, un argomento molto importante ultimamente.. Precisamente gli strumenti sono:

  • Pagespeed Insight, lo strumento più famoso. Si tratta di un analizzatore di pagine e ne misura le prestazioni, suggerisce che cosa si dovrebbe cambiare nel tuo sito web per velocizzare il tempo di caricamento.
  • Pagespeed Module, è il soggetto principale di questo post. È un modulo disponibile per Nginx (ngx_pagespeed) e Apache (mod_pagespeed), esegue automaticamente le ottimizzazioni per accelerare le pagine, senza dover cambiare nulla nel codice dell’applicazione.
  • Pagespeed Service, è un proxy gestito da Google, basato sul modulo Pagespeed. Se non avete la possibilità di installare il modulo direttamente sul server, questa è la soluzione migliore.

Come ho detto in un post precedente, il server web di questo blog esegue Pagespeed. Utilizzando questo modulo ho avuto molte facilitazione. Il modulo esegue molte ottimizzazioni, che sono noiose da implementare, soprattutto su un CMS … Continue reading

È tempo di SSD!

SSD Crucial M500Pochi giorno fà ho provveduto all’ultimo aggiornamento del mio PC. Ovviamente l’aggiornamento è un SSD (Solid State Drive). Nessuno immaginava prima degli SSD quanto incedesse il sistema di memorizzazione sulle prestazioni dei computer. Adesso il mio PC si avvia in appena 5 secondi, e i software che prima impiegavano 20-30 secondi ad aprirsi, adesse ce ne mettono 3-5. Ho scelto un Crucial M500, un ottimo ocmpromesso fra costo e prestazioni.

Non ero molto interessato alle performance pure dell SSD che acquistavo, perchè quasi tutti gli SSD saturano il canale SATA 2 (3 gbit). Infatti per un PC vecchio come il mio, il collo di bottiglia è costituito proprio dalla porta SATA. SSD come l’M500 saturano persino le porte SATA 3 (6 Gbit).

Perchè gli SSD incrementano le prestazioni? In cinque parole: nessuna parte meccanica in movimento. Salvare dati sui chip, azzera la latenza nel recuperli da settori diversi dell’unità di memorizzazione. In un Disco Rigido normale, vi è un disco rotante e una testina che si muove sul disco per recuperare i dati. Se i dati a cui si accede sono contigui, il disco rigido potrebbe avere prestazioni simili a un SSD. Ma nel mondo reale i dati a cui si accede sono sparsi sul disco. Questo rallenta le prestazioni dei normali dischi rigidi, perchè devono muovere la testina per leggere i dati. Per un SSD non c’è nulla da muovere, e può recuperare i dati senza lacuna latenza. Continue reading

Sviluppando un App per Windows Phone…

App Windows PhoneDopo un mese abbastanza intenso, ritrovo il tempo per scrivere un nuovo post.
In questo periodo ho avuto occasione di sviluppare per la prima volta un applicazione per piattaforma Windows Phone. L’ambiente .NET e C# non mi sono sconosciuti, ho infatti avuto più volte a che fare con le tecnologia Microsoft, e con lo splendido Visual Studio.

Tuttavia, dall’ultima volta che ho messo mano a questo ambiente, sono cambiate alcune cose, e sono rimasto davvero attonito dalle scelte che ha fatto Microsoft.

La prima cosa terribile in cui mi sono imbatutto, è che non tutti le versioni di Visual Studio sono compatibili con tutti gli SDK di Windows Phone. Io ho avuto bisogno di sviluppare un App che supportasse Windows Phone 7. Ma ho dovuto scoprire che l’edizione 2013 che avevo già installato, supportava solo dal SDK 8 in poi.
Sia Android che iOS, non pongono questi vincoli, almeno per versioni tanto ravvicinate…

La seconda scelta scellerata in cui mi sono imbattuto, è il requisito della tecnologia SLAT della CPU per eseguire l’emulatore Windows Phone 8. Nessun software di virtualizzazione ha un requisito del genere, solo Microsoft. Queste istruzioni sono presenti solo nelle CPU recentissime, impedendo a persone come me, che hanno una CPU ancora oggi molto performante, come un Intel Core 2 Quad Core, di sviluppare software per i Windows Phone più recenti. Continue reading

Migrazione completata

Come avevo avevo detto nel precedente messaggio, mi ero ripromesso di provare a eseguire questo blog su HHVM. Ho quindi dovuto iniziare trasferendomi da un normale hosting condiviso, a una VPS, davvero molto economica…

Chiaramente un infrastruttura davvero ultra aggiornata, infatti ho provveduto a installare HHVM, Nginx 1.5, MariaDB 10. HHVM, rispetto all’hosting dove ero, che non era provvisto di opcache, ha reso il sito una scheggia, tuttavia non ero ancora soddisfatto…

Così ho deciso di abilitare SSL, certamente non per l’alta riservatezza delle informazioni contenute in questo sito, ma poichè è un requesito per poter implementare SPDY, un evoluzione del protocollo HTTP, sviluppata da Google. Questo protocollo permette di ridurre i tempi di caricamento delle pagine.

Ho provveduto anche a rifattorizzare un pò il sito, cercando di risparmiare ovunque kilobyte e limitare al minimo il numero di risorse da caricare, aiutandomi anche con il modulo di Google, Pagespeed, una vera manna, che ottimizza pagine e risorse in tempo reale. Continue reading

Facebook riscrive PHP con HACK e HHVM

HHVMFacebook è probabilmente il più grande sito web a far ampio uso di PHP. Questo è nato come un linguaggio di scripting, per realizzare velocemente e più semplicemente siti web da Rasmus Lerdof nel “lontano” 1995. Caratteristiche di spicco per l’epoca erano l’allocazione dinamica del tipo di variabile e l’assenza di compilazione. È sufficente modificare il file e eseguire la pagina web.

Chiaramente queste, sono caratteristiche che se da un lato rendono più semplice e alla portata di chiunque sviluppare un sito web, dall’altro incidono pesantemente sulle prestazioni. Il motore Zend (cioè l’interprete standard di PHP) deve verificare in ogni uso della variabile il suo tipo, e convertirla nel tipo giusto in base all’impiego. Per quanto il linguaggio di programmazione possa fingere l’assenza dei tipi, (numero, stringa, carattere, array) a livello di esecuzione non è possibile farlo. Continue reading