Visual Studio 2008, novità interessanti e alcuni dubbi

31 12 2007

bgvs.jpgDopo un paio di versioni beta, Microsoft ha finalmente rilasciato la versione definitiva di Visual Studio 2008, accompagnato dalla nuova versione del Framework .NET, la 3.5

Vediamo nel dettaglio le novità e partiamo subito con una mia perplessità a riguardo: una discreta parte delle nuove funzionalità dedicate allo sviluppo di applicazioni desktop sono orientate all’utilizzo con windows Vista e Office 2007.
Sostanzialmente, tutti i vantaggi derivati dall’utilizzo del nuovo ambiente di sviluppo per la realizzazione di applicazioni stand-alone potranno essere sfruttate solamente se il target di sviluppo è una piattaforma con le ultimissime versioni di Windows e Office.

VS2008 introduce infatti il supporto per Windows Presentation Foundation il sottosistema grafico di Windows Vista: utilizzando il WPF, la realizzazione dell’interfaccia utente in una applicazione avviene tramite la scrittura di codice XAML (eXtensible Application Markup Language), un linguaggio di markup basato su XML (nell’universo opensource il suo equivalente è XUL, derivato dal progetto Mozilla).

L’utilizzo del designer WPF integrato in VS2008 è molto simile a quello del vecchio ambiente di disegno dei Windows Forms, con in aggiunta la possibilità di lavorare in ‘SplitView’, con la finestra di design affiancata dal codice XAML relativo, come se si stesse sviluppando l’interfaccia di una web application: lo scopo finale a mio avviso è proprio quello di ridurre sempre di più le differenze tra lo sviluppo di applicazioni desktop e web, non per niente la stessa Microsoft sta spingendo per rendere XAML l’erede dell’ormai ‘vecchio’ HTML.

Incluso nella nuova versione di VS anche il supporto per lo sviluppo di applicazioni con Microsoft Office: compatibile con Office 2003 da tuttavia del suo meglio con il nuovo Office 2007, permettendo di sviluppare applicazioni native che sfruttano la user interface che caratterizza tale versione, come le ‘amate/odiate’ Ribbon Status Bar, Ribbon Bar e le Mini-Toolbar.

Il nuovo Framework 3.5 introduce anche la tecnologia Windows Communication Foundation, che in poche parole va a semplificare lo sviluppo delle applicazioni di rete unificando in una sola architettura tecnologie diverse come WebServices, Socket, Enterprice Service.
Una volta sviluppato un servizio WFC, da VS2008 è possibile effettuarne il debug senza realizzare una apposita applicazione Host, utilizzando due utility dedicate, il WFC Service Auto Host e il WFC Test Client.

Presente come estensione installabile in Visual Studio 2005, nella versione 2008 il supporto per Windows Workflow Foundation è presente nativamente.
WWF permette la progettazione e lo sviluppo di applicazioni legate a stati ben definiti: un esempio calzante lo si può trovare all’interno di un programma di contabilità. Lo stato di una fattura o di un ordine attraversa degli ’step’ ben definiti, utilizzando il WWF e il suo designer presente in VS2008 è possibile definire lo stato dei controlli presenti nell’interfaccia grafica legati a ogni singolo step.

L’accesso alle basi dati è stato rivoluzionato in questa nuova versione di Visual Studio dall’introduzione nel framework 3.5 del linguaggio LINQ (Language INtegrated Query).
Lo scopo di LINQ è di unificare il linguaggio di accesso ai dati: lo sviluppatore lo potrà utilizzare per scrivere query nativamente in VB o C# senza dover ricordare gli eventuali dialetti di SQL legati alla piattaforma di database utilizzata, trattando i dati presenti nel Db relazione come oggetti. Lontanamente è quello che in java si è iniziato a fare con Hibernate, seguito poi da molti ‘cloni’.

La realizzazione delle applicazioni web in VS2008 prende invece una piega interessante: .NET 3.5 porta con se infatti il supporto nativo per la programmazione AJAX, riallineando il framework Microsoft a molti altri presenti nel panorama OpenSource già dotati del supporto per ajax.
Con le nuove API è possibile sia sviluppare da zero una nuova applicazione AJAX, oppure migrare una precedentemente sviluppata alla nuova tecnologia utilizzando i controlli ScriptManager e UpdatePanel (vecchie conoscenze di chi ha iniziato in passato a ’spippolare’ con ATLAS e AJAX.NET).
Un’altra novità nell’ambiente di sviluppo è la presenza di completamento del codice, dell’intellisense e del debug per il codice Javascript ‘Client-Side’.

In definitiva il nuovo ambiente di sviluppo targato Microsoft a mio avviso è degno di uno sguardo piu approfondito, nonostante la fruizione di interessanti funzionalità sia limitata a clients Windows Vista+Office 2007.





mov ax, 13h

28 12 2007

int 10h

Per chi come me ha avuto l’onore (o l’onere) di studiare un po’ di assembler 80×86 in gioventù, questa coppia di istruzioni non può che portare alla luce vecchi e piacevoli ricordi.

mov ax, 13h
int 10h

altro non era che l’inizializzazione della scheda grafica in modalità 320×200 pixels con profondità di colore a 8 bit (256 colori): il punto di partenza per qualsiasi applicazione grafica/videogioco/demo.

Non ho potuto quindi non emozionarmi quando su SecuriToons ho visto pubblicata questa vignetta:

null13mar06.jpg

[Via]





Plugin Firefox per la verifica di vulnerabilità XSS e SQL Injection

28 12 2007

Durante lo sviluppo di una web application, molto risalto va dato alla verifica della sicurezza della stessa.

Le principali vulnerabilità delle quali la nostra applicazione può soffrire sono di tipo XSS (Cross Site Scriptin) e SQL Injection.

Per chi fosse un po’ a digiuno sull’argomento, cito due voci da Wikipedia:

XSS:

La Cross-site scripting (XSS) è una vulnerabilità che affligge siti web con scarso controllo di variabili derivate da input dell’utente (spesso variabili GET). La XSS permette di inserire codice a livello browser (spesso codice javascript pericoloso) al fine di modificare il codice sorgente della pagina web visitata. In questo modo un cracker può tentare di recuperare dati sensibili (sempre dati a livello browser) quali cookies.

SQL Injection:

La SQL injection è una tecnica dell’hacking mirata a colpire le applicazioni web che si appoggiano su un database di tipo SQL. Questo exploit sfrutta l’inefficienza dei controlli sui dati ricevuti in input ed inserisce codice maligno all’interno di una query SQL. Le conseguenze prodotte sono imprevedibili per il programmatore: l’Sql Injection permette al malintezionato di autenticarsi con ampi privilegi in aree protette del sito (ovviamente, anche senza essere in possesso delle credenziali d’accesso) e di visualizzare e/o alterare dati sensibili.

A riguardo, SecurityCompass ha rilasciato sotto licenza GPL3 due estensioni per firefox dedicate al test di queste vulnerabilità:
XSS-Me, per la verificà delle vulnerabilità XSS e SQL Inject-me, dedicata alle SQL Injections.





Berlusconi, Saccà, le intercettazioni e la privacy

20 12 2007

No, non inizio a parlare di politica sul blog.

E non nascondo nemmeno una evidente antipatia nei confronti di Silvio Berlusconi.

Ma la questione in gioco in questo caso è la privacy, diritto sacrosanto che deve essere garantito per tutti.

Non posso che trovarmi quindi sulla stessa linea di pensiero di Matteo G.P. Flora (non è la prima volta che lo cito, ma non posso farne a meno visto la notevole qualità delle sue produzioni!):

[...] parafrasando un famoso detto:

Ti sbatterei in galera fino alla morte, ma mi batterò fino alla morte perché tu abbia un giusto processo, una giusta difesa e perchè i tuoi diritti siano tutelati come quelli di qualunque altro cittadino.

E non tiratemi fuori il discorso “sì, però lui…”. E’ un discorso stupido, gretto e che non ha nulla a che fare con la democrazia.
Sono sicuro che quando eravate piccoli la mamma vi ha sicuramente detto, almeno una volta, “E se lui si butta nel pozzo cosa fai?Lo segui?”.

Più Privacy. Per tutti.

Non servono ulteriori commenti. :-)





Apple Leopard: disabilitare il dock 3D

18 12 2007

In un precedente post confermavo in parte i dubbi di Andrea Beggi riguardo le performance di Leopard sul vecchio iBook G4: benche’ utilizzabilissimo, alcuni ‘finezze’ dell’interfaccia grafica (come il dock trasparente e in 3d) mettevano a dura prova la scheda grafica del piccolo notebook.

Qualcuno mi ha scritto chiedendo se conoscevo un modo per disabilitare la visualizzazione in 3d del dock e recuperare un pochino di performance sui sistemi piu’ datati.

Il metodo c’e’ e prima di me ne ha parlato Paolo Di Leo nel suo blog:

 Scrivete nel terminale (/Applicazioni/Utility/Terminal):

defaults write com.apple.dock no-glass -boolean YES

-premere invio

killall Dock

-premere invio

Per tornare al nuovo Dock 3D, basta sostituire YES con NO.





Utilizzare lo stack bluetooth di Windows XP SP2 per i device dei laptop HP

16 12 2007

Mi è capitato con il laptop di un cliente: portatile HP, con Bluetooth integrato e driver widcomm fornito in bundle.

Il nuovo cellulare Sony Ericsson del cliente in questione riusciva a fare il pairing ma non veniva riconosciuto dal PCSuite per effettuare la sincronizzazione. Operazione che invece andava tranquillamente a buon fine utilizzando una antennina bluetooth USB, riconosciuta da windows XP e configurata in automatico utilizzando i drivers inclusi nel sistema operativo.

Il bluetooth integrato HP  tuttavia, benchè probabilmente compatibile, non veniva riconosciuto dallo stack nativo di windows. Perchè non ‘forzarlo’ ad utilizzare il driver di windows?

Per farlo, è necessario per prima cosa rimuovere i vecchi drivers, disinstallando il pacchetto da ‘Aggiungi-Rimuovi programmi’.

Poi aprire il file  BTH.inf nella directory C:\WINDOWS\inf ,cercare la linea seguente:

[HP.NT.5.1]
“HP USB BT Transceiver [1.2]“=       BthUsb, USB\Vid_03F0&Pid_0C24

e modificarla in questo modo:

[HP.NT.5.1]
“HP USB BT Transceiver [1.2]“=       BthUsb, USB\Vid_03F0&Pid_0C24
“HP USB BT Transceiver [Patched]“=  BthUsb, USB\Vid_03F0&Pid_011D

(in pratica aggiungiamo il Product-ID del device integrato in modo da convincere winXP ad utilizzare il driver di sistema).

A questo punto, al successivo restart del PC windowsXP riconoscerà il bluetooth integrato come compatibile e lo gestirà utilizzando il driver di sistema.

p.s.
fatta la modifica, il cellulare del cliente ha iniziato a sincronizzare senza problemi. :-)

[via X-Setup]





ClusterSSH: inviare comandi a piu’ server contemporaneamente

14 12 2007

Bel tool ClusterSSH: permette di aprire piu’ sessioni SSH su diverse macchine e inviare lo stesso comando a tutti i server collegati.

Un toccasana per i SysAdmin con parecchie macchine uguali da amministrare/aggiornare!

[via  OssBlog]





links for 2007-12-12

12 12 2007




Scrivere buon codice

12 12 2007

 ”Che male potrebbe fare un GoTo di troppo?” :-)

goto.png

[via xkcd]





links for 2007-12-10

10 12 2007




Commodore Computer Club: quanti ricordi!

10 12 2007

logo_ccc.jpgQuasi non credevo ai miei occhi quando sono approdato su Ready64.org, sito di appassionati italiani del leggendario Commodore 64.

Tra le varie interessantissime sezioni una bellissima con le scansioni dei libri usciti nell’epoca d’oro della Commodore e una assolutamente da visitare dedicata alle scansioni dei numeri di Commodore Computer Club, dall’uscita numero 1 alla numero 90.

E’ disponibile anche un comodo Sommario delle rubriche presenti sulle uscite disponibili.





Le scuse del programmatore

10 12 2007

Come spiegare al tuo capo il perchè stai giocando a Quake 3 Arena invece di portare avanti $progettoUrgentissimo?

“Sto compilando!”

:-D

compiling.png

[via xkcd]





Safari 3: abilitare il Web Inspector

9 12 2007

Ho sempre rimpianto la mancanza su Safari di un plugin per il debug estremamente utile come FireBug, disponibile per Firefox.

A quanto pare parte delle funzionalità fornite da FireBug sono già comprese nell’ultima versione del browser di mamma Apple.

Aprendo una finestra di terminale e digitando

defaults write com.apple.Safari WebKitDeveloperExtras -bool true

safari_developer_2.gif

safari_developer_3.png

al successivo avvio di Safari, selezionando una parte di pagina e cliccando sulla selezione con il tasto destro (o Ctrl+Click) troveremo nel menù la voce ‘Inspect Element’ che, se scelta aprirà una finestra di debug estremamente accurata. :-)

[via Tech-Recipes]





Porno per Geeks

8 12 2007

Bella galleria di foto per quei malati come me che si emozionano con le immagini di supercomputers, vecchi e (come in questo caso) attuali..:-)

http://eecue.com/images_archive/eecue-album-1500-1-SC07.html





Sessioni NetBios Nulle

7 12 2007

La NetBios Null Session è un meccanismo che consente ad un utente non autenticato di ottenere informazioni su un host remoto.
Nei sistemi Windows (Nt,2000,XP e 2003), buona parte dei servizi locali sono eseguiti con l’account SYSTEM utilizzato anche per varie operazioni critiche di sistema.
Proprio per la criticita’ delle operazioni che va a svolgere, tale account ha privilegi praticamente illimitati e non richiede alcuna password, proprio per evitare che venga utilizzato per effettuare il LogIn .

Qualora l’utente SYSTEM avesse bisogno di accedere ad altre macchine in rete, avra’ necessita’ di reperire alcune informazioni, come le condivisioni disponibili e gli utenti. Non essendo un reale account con user&pass, si connettera’ utilizzando appunto una sessione nulla, funzione implementata nel sistema di networking di windows proprio per questo scopo.

Le sessioni NetBios nulle permettono quindi di sfruttare le funzionalita’ del protocollo SMB (Server Message Block) senza stabilire preventivamente una trust relationship.
Sfortunatamente anche un eventuale aggressore puo’ connettersi utilizzando una Sessione Nulla. :-)

Riassumendo, con una sessione nulla possiamo ottenere:

  • Lista di gruppi e utenti
  • Lista di hosts collegati
  • Lista delle condivisioni
  • SID (Security Identifiers) di utenti e host

Le sessioni NetBios NULL sono abilitate di default su Windows 2000 e NT.
Windows XP e 2003 permettono di recuperare l’elenco degli share, ma non degli accounts.

Un tool per effettuare un test sulle sessioni nulle NetBios e’ HUNT.

Parte dell’NT Forensic Toolkit realizzato da Foundstone, rende molto semplice realizzare l’elenco di utenti e shares su un host windows.

Un esempio di output del programma:

C:\tools>hunt \\<IP Address>

share = IPC$ – Remote IPC

share = c -

share = ADMIN$ – Remote Admin

share = C$ – Default share

User = Administrator, , , Built-in account for administering the computer/domain

Admin is <NetBIOS Name>\Administrator

User = Guest, , , Built-in account for guest access to the computer/domain

User = IUSR_<NetBIOS Name>, Internet Guest Account, Built-in account for anonymous access to Internet Information Services, Built-in account for anonymous access to Internet Information Services

User = IWAM_<NetBIOS Name>, Internet Guest Account, Built-in account for anonymous access to Internet Information Services out of process applications, Built-in account for anonymous access to Internet Information Services out of process applications

User = victim_user Victim Name, ,

Altro tool a mio avviso molto utile e’ winfo ( http://ntsecurity.nu/toolbox/winfo/ )

Si tratta di una utility da riga di commando che recupera dall’host la maggior parte delle informazioni ottenibili da una sessione nulla, complete le trust relationships.
Un esempio di output:

C:\>winfo xxx.xxx.xxx.xxx –n
winfo 1.5 – copyright (c) 1999-2001, Arne Vidstrom
- http://www.ntsecurity.nu/toolbox/winfo/
Trying to establish null session…
Null session established.

USER ACCOUNTS:
* Administrator
(This account is the built-in administrator account)
* Guest
(This account is the built-in guest account)
* victim_user

WORKSTATION TRUST ACCOUNTS:

INTERDOMAIN TRUST ACCOUNTS:

SERVER TRUST ACCOUNTS:

SHARES:

* IPC$

* drivec$

(ecc…)

Utilita’ delle sessioni nulle per un eventuale attacker
Senza avere accesso alla macchina e’ possibile conoscere gli shares e gli eventuali utenti che possono accedervi.

Un eventuale malintenzionato puo’ in quel caso avere un elenco di account sui quali concentrarsi: una volta reperite le credenziali di uno degli account elencati potra’ avere accesso allo share che lo interessa.

Fortunatamente da Windows XP in poi questa ‘perdita di informazioni’ e’ stata in parte limitata rendendo di default non possibile l’enumerazione degli utenti.

Disabilitare le sessione NetBios nulle
I controller di dominio per comunicare richiedono sessioni nulle.
Perciò, se state lavorando in un dominio di rete, potete limitare la quantità di informazioni fornite, ma non eliminarle del tutto.

N.B.: applicare limitazioni sulle sessioni nulle nei domain controller e su altri server specifici può compromettere alcune normali operazioni di rete.
E’ consigliabile quindi effettuare questa configurazione solo se la macchina in questione e’ particolarmente esposta a rischi. Tutte le altre macchine dovrebbero essere protette da un firewall configurato per bloccare NetBIOS e CIFS.

Di seguito le procedure per la limitazione delle sessioni nulle sui vari sistemi operativi:

Windows XP Professional (valido anche per Windows 2000 e XP Home)

1. Modificare la seguente chiave di registro:
HKLM/System/CurrentControlSet/Control/LSA/RestrictAnonymous=2

2. Riavviare il sistema

Windows Server 2003

1. Aprire Administrative Tools –> Local Security Policy –> Local Policies –> Security Options. Verificare che le seguenti policy siano abilitate:
Network Access: Do not allow anonymous enumeration of SAM accounts: Enabled (Default)
Network Access: Do not allow anonymous enumeration of SAM accounts and shares: Enabled

La stessa operazione puo’ essere effettuata modificando le seguenti chiavi nel registro di configurazione:
HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymous=1 (Disabilita l’enumerazione degli share)
HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymousSAM=1 (Impostazione di default: non permette l’enumerazione degli accounts)

2.Riavviare il sistema

Windows 2000

1. Aprire –> Administrative Tools –> Local Security Settings –> Local Policies –> Security Options

2. Selezionare “Additional restrictions of anonymous connections” nel pannello Policy sulla destra

3. Dal menu “Local policy setting”, selezionare: “No access without explicit anonymous permissions”

4. Premere OK

5. L’equivalente modifica dal registro di configurazione: HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymous=2

6. Riavviare il sistema.

Windows NT 4.0 (Service Pack 3 o superiore)

1. Modificare la chiave di registro:
HKLM/System/CurrentControlSet/Control/LSA/RestrictAnonymous=1

2. Riavviare il sistema