... se dovete realizzare oggi un'applicazione che guardi al domani:
http://www.xamlon.com/
Per ora penso che aspetterò ad acquistarlo, però sapere che è alla versione 1.0 e che si può comprare ... stimola parecchio :-) !
Se poi è come i prodotti di una nota "software house" :-) di Redmond ... è meglio aspettare la terza versione.
Ci si mette veramente poco a leggerlo:
http://pluralsight.com/blogs/dbox/archive/2004/10/02/2558.aspx
ma è piacevole, almeno per confortarsi e sapere che, anche se non se ne sa quasi più nulla dall'ultima PDC ... comunque si procede!
E per quelli che si chiedono il perchè di Indigo ... ecco altri 5 minuti:
http://pluralsight.com/blogs/dbox/archive/2004/10/03/2591.aspx
Ho visto questo
post di Pierre sui SWC (Services Without Components) che rimandava ad
un post del mitico Christian Weyer, sempre a tal proposito. Al di là del fatto che suggerisco a tutti coloro i quali hanno l'esigenza di gestire transazioni distribuite, di valutare anche i SWC, mi gongolo (in stile Striscia La Notizia, nuova edizione :-) ...) del fatto che
già nel 2003 mi ero occupato nel mio blog di questo stesso argomento. Per contro non posso fare a meno di osservare che alla PDC dello scorso anno, nel path di migrazione a Indigo, è stato segnalato il fatto che i SWC non è assolutamente garantito (eufemismo) che siano comodamente migrabili/portabili a Indigo stesso. Quindi usateli, ma con moderazione e riflettendoci bene. Rimane comunque il fatto che sono una gran cosa! :-)
Se volete approfondire come funzionano e come creare degli XmlUrlResolver, ecco un
bell'articolo su MSDN. Interessante soprattutto l'idea del resolver per risorse XML provenienti da SQL Server 2000.
Smanettando un po' con il bug segnalato su SourceForge, ripreso da Andrea Saltarello e Lorenzo Barbieri e spiegato in maggior dettaglio da RoB, mi sono accorto di una cosa "simpatica" :-). Al di là del fatto che fa benissimo RoB a suggerire un Replace di tutte le occorrenze di %5C e di \ , perchè sfruttando questo bug un hacker potrebbe richiedere la URL "bucata" in diverse forme. Le seguenti sono infatti tutte URL valide:
http://localhost/DevLeap/ExploitASPNET%5C%5C%5CDefault.aspx
http://localhost/DevLeap/ExploitASPNET%5CDefault.aspx
http://localhost/DevLeap/ExploitASPNET%5C.%5CDefault.aspx
http://localhost/DevLeap/ExploitASPNET%5C../ExploitASPNET%5CDefault.aspx
http://localhost/DevLeap/ExploitASPNET%5C%2E%5CDefault.aspx
e ce ne sono molte altre (come è tipico dei problemi di canonicalization), semplicemente basta mettere una o più occorrenze di / o di %5C e il gioco è fatto, anche senza delle sotto-directory. Ma la cosa curiosa è che se utilizziamo la cookieless session () il problema (almeno stando alle prime prove che ho fatto) sembra svanire, apparentemente perchè il filtro ISAPI che rimappa la SessionID sul cookie virtuale, sembra riscrivere correttamente il path. Se infatti proviamo a scrivere una URL con il %5C al suo interno, con la cookieless session attivata, vedremo che il path richiesto ad ASP.NET risulta già corretto. Ad esempio la URL:
http://localhost/DevLeap/ExploitASPNET/(bbh4rvfebfvttlzt02lugn45)/%5CDefault.aspx
diventa:
http://localhost/DevLeap/ExploitASPNET/Default.ASPX
Infine per curiosità ho provato a riprodurre il problema anche su ASP.NET 2.0 (con Windows Server 2003 Standard Edition, ma usavo il Visual Web Developer Web Server di Whidbey ... quindi W2K3 c'entra poco) e ... usando la \ singola il problema non si presenta, usando %5C il problema non si presenta, ma utilizzando per esempio \\ il problema si presenta! :-(
Adesso faccio qualche altra prova ....
UPDATE: Pubblicando l'applicazione su IIS il problema non si presenta più, ma a questo punto - anche se non ho ancora approfondito la cosa - è probabile che il bug non si presenti per merito di IIS6 (che nasce imparato :-) !) e non per merito di ASP.NET 2.0 ... magari stasera (dopo l'uscita con la morosa e gli amici, riprenderò in mano il discorso per fare qualche altra prova).
Mi sembra di capire che per il motorola MPX che Marco attende con tanta ansia ... ci sia ancora da aspettare un po', intanto sta arrivando l'MPX 220.