martedì, luglio 15, 2008

Normalizzazione di database

Questo post è dedicato a Guerrino.

Non voglio scrivere l'ennesimo post sulla denormalizzazione dei database. L'argomento è ampiamente trattato da esperti e guru. Un giro con Google e si trovano centinaia di voci. Voglio comunque segnalare il recente articolo di Jeff Atwood Maybe Normalizing Isn't Normal. Merita una lettura attenta.


Ci tenevo invece a riportare un paio di frasi ad effetto di Pat Helland
 
"Normalization is for Sissies"
  
"People normalize because their professor said to"
 

La prima è una provocazione. La seconda invece ci dovrebbe far pensare..... quante volte si fanno le cose in un certo modo perchè qualcuno di "autorevole" (o autoritario?) ci ha detto che così si deve fare?


PS: non sono un fan sfegatato della denormalizzazione. Anzi ritengo che i casi in cui la si possa o debba applicare in modo massiccio sono realmente pochi. D'altra parte non sono neanche un sostenitore della normalizzazione a tutti i costi. In un futuro post (tempo permettendo) cercherò di fare la mia list di tips sull'argomento.

giovedì, luglio 10, 2008

Bug generalizzato - DNS cache poisoning

In questi giorni sono state rilasciate varie patch da molti grossi nomi: Microsoft, Cisco, Sun, ecc.
Le patch correggono un bug nell'implementazione e, se ho capito bene, nell'uso dei server DNS. Lo scopritore del problema è Dan Kaminsky che sul suo blog ha pubblicato un interessante articolo in cui racconta lo sforzo congiunto di vari produttori per far fronte al problema:   http://www.doxpara.com/?p=1162

Per i dettagli tecnici, vedere l'articolo su CERT:  http://www.kb.cert.org/vuls/id/800113
Sempre nell'articolo del CERT è presente la lista dei sistemi coinvolti. Praticamente tutti, in varie forme:Microsoft, Cisco, Sun, Debian, RedHat, ecc. Altri sono ancora Unknown. Vedremo che cosa succederà nei prossimi giorni.

Molti dettagli tecnici sono presenti anche sul Advisory di Cisco:  http://www.cisco.com/en/US/products/products_security_advisory09186a00809c2168.shtml

C'è però una cosa che non mi è ancora chiara: lo stato di Debian. Leggendo i vari avvisi presenti sul loro sito sembra che il problema su BIND sia stato risolto ma non quello "lato client". Vedi  http://www.debian.org/security/2008/dsa-1605

Ad oggi, l'unico sistema ad ampia diffusione che sembra immune dal problema è Vista (almeno stando al bollettino di Microsoft).


UPDATE1: la cosa simpatica (si fa per dire) è che sembra che il problema fosse già stato evidenziato ben 3 anni addietro.  Ecco il documento su SANS: http://www.sans.org/reading_room/whitepapers/dns/1567.php
Il documento è molto interessante perchè spiega nel dettaglio come avviene l'attaco. Si tratta di un classico attacco "Man in the middle". Come client viene usato Windows XP ma, come abbiamo visto in questi giorni, il problema è generalizzato.

UPDATE2: altro post molto interessante:
http://blog.netherlabs.nl/articles/2008/07/09/some-thoughts-on-the-recent-dns-vulnerability
Bert Hubert, l'autore, oltre a sostenere che il problema fosse noto dal 1999, fa anche alcune interessanti riflessioni sul DNS in se e su come certi enti non siano stati in gradi di reagire per tempo. Molto interessante.

giovedì, luglio 03, 2008

Sicurezza Home Banking

Mi stavo chiedendo perchè più di una banca online non "copra" tutto il sito, pagina del form di login compresa, con https. Cercando con Google sono capitato su un post del 2006 di Raffaele Rialdi.  Sono passati gli anni e nulla è cambiato.
Ma le strutture tecniche che si occupano di web in queste banche, fanno finta di  niente oppure non capiscono neanche quale sia il problema?

La cosa è ancora più buffa (per non dire altro) se confrontata con il decalogo dell'ABI (Associazione Bancaria Italiana). A pagina 6, al fondo, si legge:
6. Quando inserite dati riservati in una pagina web, assicuratevi che si tratti di una pagina protetta: queste pagine sono riconoscibili in quanto l’indirizzo che compare nella barra degli indirizzi del browser comincia con “https://” e non con “http://” e nella parte in basso a destra della pagina è presente un lucchetto.
Stesso concetto è ribadito sempre dall'ABI in un comunicato stampa del 6 agosto 2007:

Verifica l’autenticità della connessione con la tua banca, controllando con attenzione il nome del sito nella barra di navigazione. Se è presente, “clicca” due volte sull’icona del lucchetto (o della chiave) in basso a destra nella finestra di navigazione e verifica la correttezza dei dati che vengono visualizzati.

Che dire? Speriamo che prima o poi certe banche decidano di leggere i decaloghi e i comunicati stampa della loro associazione, l'ABI.

Firefox lento con Asp.net Development Server

A futura memoria!

Firefox è particolarmente lento quando lo si usa per navigare un sito in sviluppo sotto Visual Studio 2005.
Quest'ultimo utilizza un piccolo web server interno per mostrare il sito: Asp.net Development Server (webdev.webserver.exe). Personalmente ho riscontrato il problema con Vista Business.

Soluzione: modificae un parametro di configurazione di Firefox.
  • about:config
  • impostare network.dns.disableIPv6 a true

mercoledì, luglio 02, 2008

Generics in C#: considerazioni dopo tre anni

Secondo me i Generics sono una delle feature più interessanti introdotte in NET 2.0.  Ormai sono quasi tre anni che li uso e mi rendo conto che semplificano enormemente la vita. Poter controllore già a compile-time la correttezza dei tipi fa risparmiare molto tempo e mal di testa.
Il primo uso è sicuramente nelle "liste" & affini:  poter lavorare con List<MiaClasse> invece che con ArrayList è tutta un'altra vita. Discorso analogo con Dictionary<A, B>, ecc.
Ci sono poi i delegate e metodi generics. Ad esempio: Comparison<T> , EventHandler<T> , ecc.  E Comparer<T>  nei metodi.

Per chi vuole approfondire il discorso sui generics facendo una comparazione anche con Java e C++ consiglio di leggere: