mercoledì 29 febbraio 2012

Shhh ... non lasciate che i vostri header di risposta parlare a voce troppo alta

Quando si parla per la nostra sicurezza personale, siamo cresciuti tutti un po 'abituati amantenere le cose sul down-bassa . Ad esempio, coprire la tastiera del bancomat quando si entra il nostro PIN e distruggere i nostri documenti sensibili piuttosto che gettarli direttamente nella spazzatura.
Noi non farlo perché ogni pezzo unico di informazione sta per portarci annullata, ma piuttosto cerchiamo di non trasmettere tutto ciò che può essere utilizzata per trarre vantaggio da noi.Questo PIN può essere utilizzato con la carta per prelevare contanti se qualcuno prende le mani su di esso (o ha un dispositivo di skimming ) e che estratto conto si gettano nella spazzatura potrebbe essere utilizzato da qualcuno come leva per il furto di identità.
E così è con le intestazioni di risposta, quei piccoli bocconcini di informazioni la vostra applicazione è sciolto lasciando in libertà che probabilmente non aveva nemmeno dato un secondo pensiero. Sulla superficie, si tratta di dati innocui non serve a nessuno, ma scavare un po 'più profondo e all'improvviso diventa molto utile per i malvagi.

Perché è importante?

Lasciatemi fare un esempio: si sta crociera con il vostro sito nella sua configurazione di default per quanto riguarda gli header sono il che significa che un mucchio di informazioni sul sito viene inviato in ogni risposta. Sembra probabilmente come qualcosa di simile (catturati utilizzando Fiddler ):
Intestazioni di risposta da Telerik
Questo è da una delle pagine demo su telerik.com ma potrebbe benissimo essere da quasi qualsiasi sito web là fuori esegue la configurazione predefinita di MVC 3 e. NET 4 utilizzando IIS 7.5. Ma appendere - questo è in realtà un sacco di informazioni da sapere su un sito, soprattutto quando è tutto implicitamente comunicate (vale a dire non è mai stato probabilmente l'esplicita intenzione degli sviluppatori di divulgare questo).
Continuando il nostro esempio ipotetico, un giorno, un ricercatore si apre a una conferenza sulla sicurezza e mostra come un nuovo zero-day attacco può essere utilizzata per sfruttare IIS. Cosa c'è di più, la vulnerabilità è specificamente con IIS 7.5. E solo quando è in esecuzione ASP.NET 4.
Suona troppo ipotetico? Una cosa molto simile è accaduto proprio l'altro giorno , ed è successo un certo numero di volte prima che troppo. Il livello di specificità è spesso diversa (potrebbe essere semplicemente "tutto IIS" che è vulnerabile), ma probabilmente si può vedere da dove questo sta iniziando ad andare ora: i siti web che pubblicizzano la loro scelta di server web e application framework anche pubblicizzare la loro sensibilità quando le vulnerabilità si trovano.
Ma è qualcosa di più che semplici vulnerabilità, come si potrebbe sfruttare alcune caratteristiche di una versione di un quadro può essere diversa a un'altra versione. Ad esempio, modifiche nella richiesta di convalida. NET 4,5 significherà l'angolo si potrebbe prendere per testare le vulnerabilità XSS potrebbe cambiare. Conoscere la versione del framework in anticipo ti dà un grande inizio ha avuto in termini di quale approccio si potrebbe prendere quando si ha il cappello sul malfattore.

Contention e altre implicazioni

Molte persone contestare che questo non è necessario, "security through obscurity", faranno gridare. Non proprio - questo termine di solito è usato per suggerire che una determinata pratica di mantenere qualcosa dal punto di vista è l'unica cosa in piedi tra un sistema "sicuro" e un crollo totale della cauzione di cui sopra. Mettere tutti i contenuti di amministrazione sotto "/ MyHiddenAdmin" poi non l'implementazione dei controlli di accesso - ora che è oscuro!
Non broadcasting intestazioni ci riporta a quella originale esempio di come gestiamo gli aspetti della nostra sicurezza personale. Non si tratta di fare una applicazione web "sicura" come se fosse una pratica per domarli, no, non si tratta di mantenere le informazioni che potrebbero essere utilizzati come parte di un più ampio attacco un po 'tranquillo.
L'altro pro-header-offuscamento argomento è che semplicemente non è necessario trasmetterà queste informazioni. Voglio dire, non viene utilizzato in alcun modo funzionale dal browser e, alla fine della giornata sei solo l'invio di ulteriori byte lungo il filo che nessuno ha veramente bisogno. Oh - e lo si invia giù con ogni singola risposta il server invia. E 'piccola, ma è inutile e che sta per avere un impatto negativo sulle prestazioni piccola.
Non siete ancora convinti? Date un'occhiata a ciò che l'IETF (Internet Engineering Task Force) ha da dire in RFC 2068 :
Rivelare la versione specifica del software del server possono consentire che la macchina server a diventare più vulnerabili agli attacchi contro il software che è noto per contenere buchi di sicurezza. Implementers dovrebbe rendere il campo di intestazione Server un'opzione configurabile.
In più troverete anche la IIS Lockdown strumento di formulare raccomandazioni per trasformare queste intestazioni off. Chiaramente la guida dalle persone che dovrebbero conoscere è quello di mantenere le cose un po 'tranquillo.
Ma alla fine della giornata, una delle ragioni convincenti per non trasmettono le intestazioni è che è morto facile per spegnerli. Forse sarà utilizzata in un attacco contro il vostro sito un giorno non, forse si, ma se si tratta di pochi minuti per spegnerli e si risparmia qualche byte in ogni risposta, cosa c'è da perdere?

Headers non è intestazioni

Non tutte le intestazioni sono stati creati uguali e il modo in cui li spegne all'interno dello stack Microsoft è diverso. Ricapitoliamo su quelli che abbiamo visto in precedenza su:
  1. Server: Il software del server web in esecuzione dal sito. Esempi tipici sono "Microsoft-IIS/7.5", "nginx/1.0.11" e "Apache".
  2. X-Powered-By: La raccolta (ci possono essere molteplici) dei quadri di applicazioni in esecuzione dal sito. Tipici esempi sono: "ASP.NET", "PHP/5.2.17" e "UrlRewriter.NET 2.0.0".
  3. X-aspnet, Version: Ovviamente un colpo di testa solo ASP.NET, tipici esempi includono "2.0.50727», «4.0.30319» e «1.1.4322».
  4. X-AspNetMvc-Version: Ancora una volta, si vedrà solo questo nello stack ASP.NET e gli esempi tipici sono "3.0", "2.0" e "1.0".
Cominciamo con il server e in questo caso, il valore viene ovviamente direttamente tramite IIS. Ora tenere a mente IIS non devono essere in esecuzione ASP.NET, si potrebbe essere in esecuzione PHP o node.js o anche solo pagine html direttamente vecchi. Chiaramente non stiamo andando a disabilitare l'intestazione del server in qualsiasi punto all'interno la nostra configurazione di ASP.NET se vogliamo disattivarlo per tutti questi quadri.
Ma prima di iniziare a provare a cambiare le cose fuori, creiamo una linea di base, qui sono le intestazioni di un nuovo ASP.NET MVC 3 app installato e funzionante sul mio IIS locale:
Intestazioni di risposta predefinite dal sito di prova
Ora, di nuovo al server. Il modo più semplice per sbarazzarsi di tale intestazione server di fastidioso e di garantire che rimanga andato in tutti i vari quadri IIS verrà eseguito è quello di installare UrlScan . Questo strumento farà un sacco di cose diverse per voi in giro come IIS gestisce le richieste, ma per oggi, dobbiamo solo di accendere un editor di testo e dare un'occhiata al file di configurazione che si trova in C: \ Windows \ System32 \ inetsrv \ urlscan \ UrlScan.ini. Quello che vogliamo fare è trovare l'impostazione "RemoveServerHeader" e configurarlo per essere "1". Diamo un'occhiata a queste intestazioni ora:
Sito di prova con l'intestazione server rimosso
Non più server!
Quando si tratta di X-Powered-By, questa è in realtà facilmente configurabile direttamente fuori dalla scatola in IIS 7.x, salta a destra nella configurazione di IIS del sito web e individuare la voce "le intestazioni HTTP di risposta":
"Le intestazioni di risposta HTTP" nella configurazione IIS
E da lì è abbastanza auto-esplicativo:
Rimozione del "X-Powered-By" header in IIS
Passando alla versione di ASP.NET, questo è un pezzo di torta, perché è semplicemente un elemento di configurazione nel file web.config:
< system.web >
  < httpRuntime enableVersionHeader = " falso " />
</ system.web >
La versione MVC è anche facile, anche se ci richiede di toccare il codice. Nel corso del Global.asax, vogliamo saltare l'evento Application_Start e aggiungere il seguente:
MvcHandler DisableMvcResponseHeader =. true ;
Molto semplice, e con tutti questi a posto ora abbiamo tagliato le intestazioni giù quindi non c'è assolutamente nulla di eventuali interessi a sinistra:
Un insieme di intestazioni pulita con nessun server o info quadro
Un po 'side-nota prima di procedere: ci sono molti modi diversi di fare la stessa cosa. Ad esempio, alcune cose un po 'diverse in IIS 6. Poi ci sono approcci come Howard van Rooijen di "CloakIIS" che avvolgono il tutto in un unico gestore (anche se ho personalmente avuto risultati contrastanti con questo approccio). Alcuni di questi possono essere più difficile o più facile a seconda della versione di IIS, ASP.NET e il modello di hosting si utilizza (per esempio se UrlScan è ancora disponibile). In definitiva però, è un mezzo per un fine, e se questo fine significa che queste intestazioni non vengono trasmesse, poi però ci si avvicina è bene.

Controllo delle intestazioni con ASafaWeb

Perché questa è una di quelle vittorie facili in lo "sforzo contro ricompensa" ROI della sicurezza, sono andato avanti e costruire una scansione delle intestazioni eccessivi in ASafaWeb . Che cosa significa è che la scansione di un sito come l'esempio Telerik da prima ora restituisce un avviso in questo modo:
ASafaWeb intestazioni trovare eccessivi tornato
Perché un avvertimento? Non è semplicemente alla stessa stregua dei rischi di configurazione gravi come esporre le tracce dello stack o tronchi ELMAH. Infatti, in termini di gravità è più come l'ASafaWeb altro avviso raccoglie attualmente up - il reindirizzamento HTTP a HTTPS.In entrambi i casi, essere consapevoli del rischio, capire, tentare di attenuare, ma se non puoi, non è un biggie.
Un breve commento sul ASafaWeb perché ho ​​appena sanno che una persona da qualche curioso alzerà questo: asafaweb.com restituisce un colpo di testa server. Il problema in questo caso è che ASafaWeb risiede sul molto eccellente AppHarbor servizio di hosting e di essere un vero modello di cloud hosting, ha alcuni elettrodomestici intelligenti di rete bilanciamento del carico seduti di fronte a dei server web. Per quanto mi sforzassi di rimuovere o modificare l'intestazione server, è in fase di aggiunta di nuovo a valle del server web che presumo che sta accadendo verso l'apparecchio di fronte dei server.

Riassunto

Tutto questo ci riporta al mantra di applicare la protezione a strati. Si tratta di mitigazione del rischio in ogni occasione e nel caso di queste intestazioni, è morto facile rimuoverli fornendo così un vantaggio piccolo ma tangibile. Ci saranno quelli che respingere questa pratica (anzi, mi sono imbattuto in molti quando cerca di materiale per questo post), ma francamente, a meno che non può articolare un rovescio della medaglia (che io non ho visto espresso), non c'è alcun motivo per non mettere a nudo queste intestazioni fuori.

lunedì 27 febbraio 2012

Storyboarding in Team Foundation Server 11

Trovo difficile costruire interfacce utente. Essere in grado di capire che cosa rende una buona interfaccia per una particolare applicazione (e / o un client particolare) è difficile. E a volte, per il momento ho creato abbastanza di un utente per mostrare al cliente, può essere difficile per apportare modifiche ad esso.
Ci sono strumenti di là fuori che possono essere utilizzati per mock up interfacce utente. Alcune persone usano Photoshop o altri strumenti di editing delle immagini. Alcune persone usano Microsoft Visio o altri strumenti di diagrammi. Questi strumenti hanno i loro aspetti positivi e negativi per la beffarda di un design di interfaccia.
Guida è sulla strada. Il Visual Studio 11/Team Foundation Server Developer Preview 11 (che sarà in beta la prossima settimana) include un nuovo strumento che consente di prototipazione rapida beffardo di un utente. Questo è anche conosciuto come storyboarding.

Questo non è proprio un nuovo strumento a tutti. In realtà è un add-in per uno strumento già esistente con la quale la maggior parte sono noti: Microsoft PowerPoint. Proprio così - ora posso usare il storyboarding PowerPoint add-in per farsi beffe modo rapido e semplice interfacce utente per la mia applicazione.
Visual Studio 11 include un link collegamento denominato "Storyboarding PowerPoint" nel suo menu Start di Windows.Facendo clic su questo collegamento produce ciò che è mostrato nella Figura 1 .
[Clicca sull'immagine per ingrandirla.]
Figura 1. Storyboarding PowerPoint in Anteprima di Team Foundation Server Developer 11.
La finestra Storyboard Forme mostra i diversi oggetti storyboarding disponibili di default. Ci sono sfondi, compreso il browser Web, Windows o Windows Phone. Ci sono icone e gli elementi di altri campi per personalizzare molto l'interfaccia utente.
Mocking una interfaccia consiste nel creare una nuova diapositiva in PowerPoint, e trascinando gli oggetti voluto per l'interfaccia. Figura 2 mostra un esempio di interfaccia Web potenziale I deriso in circa 30 secondi.
[Clicca sull'immagine per ingrandirla.]
Figura 2. Un mockup veloce di un'interfaccia Web potenziale.
Potrei allora prendere questo mockup e mostrare al cliente, che mi potesse fornire un feedback su cosa funziona e cosa no. Questo è molto più veloce rispetto alla creazione di un vero pagina Web di prova per il cliente.
La barra degli strumenti Storyboarding ha anche un pulsante Screenshot. Questo mi permette di trascinare e rilasciare per selezionare un'area dello schermo per scattare una foto, che possono poi essere utilizzato sul Storyboard. Con questo, posso prendere le immagini o screenshot dai siti che contengono le caratteristiche che mi piacciono, e comprendono che le informazioni visivamente nella storyboard.
Utilizzando PowerPoint in questo modo mi permette anche di lavorare più volte sul mio progettazione dell'interfaccia utente, oltre a visualizzare quello che ho fatto in precedenza. Copiando e incollando una nuova diapositiva nella presentazione, posso aggiungere nuove funzionalità all'interfaccia utente, pur essendo in grado di vedere come l'interfaccia utente corrente è diverso dalle versioni precedenti.
TFS 11 ha anche una nuova caratteristica piacevole relative al storyboarding. Usando il sistema di item TFS lavoro di monitoraggio, a seconda del modello di processo che uso, ho accesso né al tipo di voce User Story di lavoro o la voce Product Backlog. Questi elementi di lavoro vengono utilizzati per raccogliere i requisiti relativi alla mia domanda. Questi elementi di lavoro hanno una nuova scheda, chiamata storyboard, dove posso collegare storyboard che ho creato per l'elemento di lavoro. Il file storyboard non è memorizzato in TFS. Invece, è memorizzato su una condivisione di file accessibile. Questa integrazione mi permette di associare facilmente uno storyboard con un elemento di lavoro in TFS, e tenerne traccia attraverso il suo ciclo di vita.
Mi piace molto che Microsoft sta prendendo uno strumento standard che molte persone sanno usare e utilizzando le sue funzionalità per abilitare storyboarding. Molti utenti finali hanno familiarità con PowerPoint, il che significa che ora posso portarli nel ciclo di sviluppo, come part-time designer. Questa funzionalità storyboarding nuova mi permette di lasciare all'utente finale di creare mockup dei tipi di schermi che vorrebbero vedere nel ricorso, che a sua volta rende il mio lavoro molto più facile.


Corso Visual Studio - Corsi Visual Studio
Corso .Net- Corso Dot.Net - Corso Vb.net
Corso C# - Corso PHP - Corso Joomla



giovedì 23 febbraio 2012

MIX: un'opportunità mancata per Microsoft?

E 'quasi primavera, per gli anni passati, che è stato il tempo mi sono trovato furiosamente l'organizzazione di attività, demo, keynote, sessioni, orari e altro ancora a Microsoft premier conferenza Web, MIX. Ma non quest'anno. Non 2012.Come molti di voi sanno, Microsoft ha ufficialmente cancellato MIX - non solo quest'anno, ma per il bene, come spiegato in questo ufficiale post sul blog di Tim O'Brien, GM della Developer Platform Evangelism (DPE) di Microsoft.

Non voglio sezionare tutte le ragioni, perché sono d'accordo con alcuni di loro. Microsoft ha bisogno di cambiamenti, MIX e aveva bisogno di un shakeup. Ma non pensate neanche per un minuto che MIX non ha valore, perché lo ha fatto. MIX è stata una conferenza unica che ha avuto un effetto a catena su molti sviluppatori dentro - e fuori - di Microsoft.
C'è Value In Confusion 
MIX è stato un evento senza un obiettivo specifico. E 'stata la conferenza di progettazione, l'evento UX, la raccolta Web, la celebrazione open source, il nesso Silverlight. Era tutte queste cose, eppure nessuno di loro allo stesso tempo. O'Brien dice che i partecipanti erano confusi su ciò che era MIX, e sono d'accordo con questo. Da dove mi sono seduto all'interno di Microsoft, ho sperimentato un sacco di quella confusione da parte degli sviluppatori. Quindi, se ammettiamo che ci fosse confusione, possiamo anche ammettere che la confusione è male? 
Credo che la confusione era uno dei MIX attira. La confusione era uno dei suoi valori. Spesso gli sviluppatori sono state meditando cosa MIX sarebbe stato, e questo mix ha contribuito surround con un sacco di buzz.
Diamo un'occhiata a TechEd in confronto. Si tratta di uno dei più grandi e più lunga eventi che eseguono Microsoft.TechEd è un evento di grande successo anno dopo anno, ma qualcuno chiedi mai cosa sta per essere al Tech Ed?Direi che TechEd è "Old Reliable", dove gli sviluppatori possono trovare sempre la tecnologia attuale, ma l'eccitazione molto poco. Non c'è niente di sbagliato in questo modello, è certamente utile a molti. Ma MIX non era in quella stessa pasta. La confusione intorno MIX aiutato le persone a concentrarsi su di esso.
MIX era un ribelle. Si adatta alle esigenze di ogni anno per quello che Microsoft, per promuovere e annunciare. Si adatta alla comunità che desiderava la sua varietà. Al tempo stesso, sconvolto gli sviluppatori che MIX non è mai stato esattamente quello che tutti volevano che fosse - ancora, la gente veniva. Per essere onesti, credo MIX avevo bisogno di tenere più vicino alla sua promessa originale di istruzione e di ispirazione per il Web community radici dell'erba, i progettisti e l'open source.
Coltivare Comunità
Così MIX è andato perché non stava avendo l'effetto desiderato. Ma io credo che ha fatto avere un effetto sulla comunità.Forse non l'effetto desiderato, ma un effetto a catena per certo. Dimenticate le tecnologie specifiche per un attimo e considerare le comunità riunite durante l'era del MIX. Ha riunito open-source leader, sviluppatori, designer e personas comunità provenienti da tutto il mondo. Molte di queste persone collegate in rete tra loro e Microsoft, e continuano a farlo oggi. Il concetto di comunità è stata davvero prendendo piede, anche se non è stato coltivato e non coltivato. Cosa sarebbe successo se questo è stato coltivato?
Prendiamo, per esempio, l'Open evento Fest Fonte al MIX 11 che ho organizzato. A quel tempo non c'era pareggio importante per open-source leader di frequentare MIX. L'idea è stata generata per ospitare un incontro in cui l'attenzione è stata la comunità open source. Mentre l'evento è stato ben lungi dall'essere perfetto, ci fu una risposta incredibilmente positiva da parte delle partecipanti, hanno creduto Microsoft cura di loro.
Cosa può aver successo se questo era più di un semplice one-time pre-keynote evento? Un evento in cui Microsoft favorito questa comunità sul serio? Dopo tutto, non è uno dei principali obiettivi di Microsoft per vincere le menti collettive di più grande, comunità di sviluppo più ampio? MIX era un mezzo per arrivarci.
La prossima fase
Il prossimo evento grande da Microsoft possono fare tutto questo e molto di più. O forse non lo farà. Non dirò cancellazione MIX è un errore, ma mi auguro che Microsoft impara a coltivare comunità. Se MIX era la prova di nulla, ha dimostrato chiaramente che Microsoft potrebbe suscitare la passione collettiva di diversi gruppi. Se non è riuscito a nulla, non è riuscito a disegnare in una comunità abbastanza ampia. C'erano designer, sviluppatori, e open-source leader, ma ci sono molti più sviluppatori, che non ha attirano da altre piattaforme.
Al prossimo grande evento, forse il focus dovrebbe essere ugualmente sulla tecnologia e la comunità. Forse conquistare i cuori è importante quanto le menti. Se ciò accade, forse tutti noi vincere alla prossima incarnazione del MIX.