<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>C#</title>
        <link>http://blogs.ugidotnet.org/rosalba/category/1790.aspx</link>
        <description>Codice e piccoli esempi</description>
        <language>it-IT</language>
        <copyright>Rosalba Fiore</copyright>
        <managingEditor>rosalbany@tiscali.it</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <item>
            <title>Semplice è bello :) Ref Out ? </title>
            <link>http://blogs.ugidotnet.org/rosalba/archive/2008/05/24/92793.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Quando affrontai per la prima volta come studentessa autodidatta il passaggio di tipi per riferimento mediante out e ref  li trovai impegnativi, sinceramente visto che non li capivo  mi demoralizzai un pò, solo all'inizio però &lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/wink_smile.gif" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Oggi mi è capitato di leggere direttamente da MSDN  &lt;a href="http://msdn.microsoft.com/it-it/library/ms182131(VS.80).aspx"&gt;&lt;strong&gt;Evitare parametri out&lt;/strong&gt;&lt;/a&gt; di seguito riporto fedelmete alcuni passaggi:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;"Il passaggio di tipi per riferimento (mediante out o ref) richiede esperienza con i puntatori, conoscenza delle differenze tra tipi di valore e tipi di riferimento, nonché conoscenza dei metodi con più valori restituiti. La differenza tra parametri out e ref spesso non è compresa."&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;"Sebbene i valori restituiti siano comuni e ampiamente utilizzati, l'applicazione corretta dei parametri out e ref richiede competenze in progettazione intermedia e codifica. I progettisti di librerie che progettano per un pubblico generico non possono prevedere che gli utenti utilizzino in modo professionale i parametri out o ref."&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Però  &lt;/font&gt;&lt;font face="Arial"&gt;cassarli completamente  mi sembra esagerato, semplicemente utilizziamoli quando è il caso. Non a caso l'articolo si trova nella sezione "Avvisi di Progettazione". &lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rosalba/aggbug/92793.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rosalba Fiore</dc:creator>
            <guid>http://blogs.ugidotnet.org/rosalba/archive/2008/05/24/92793.aspx</guid>
            <pubDate>Sat, 24 May 2008 15:47:35 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rosalba/comments/92793.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rosalba/archive/2008/05/24/92793.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rosalba/comments/commentRss/92793.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rosalba/services/trackbacks/92793.aspx</trackback:ping>
        </item>
        <item>
            <title>Provando la beta 3 di Safari</title>
            <link>http://blogs.ugidotnet.org/rosalba/archive/2008/01/03/90558.aspx</link>
            <description>&lt;p&gt;Insomma passano tanti ma tanti minuti aspettando di poter inserire name and password per un portale SharePoint con Safari x Windows, talmente tanti che dopo un pò si lascia perdere....&lt;/p&gt;
&lt;p&gt;E' ancora in beta dunque c'è margine di miglioramento, capiamoci non che io sia una fanatica di Apple però vedere cose nuove e/o diverse fa sempre bene&lt;/p&gt;
&lt;p&gt;&lt;img id="ViewPicture_ascx_GalleryImage" style="BORDER-RIGHT: black 2px solid; BORDER-TOP: black 2px solid; BORDER-LEFT: black 2px solid; WIDTH: 448px; BORDER-BOTTOM: black 2px solid; HEIGHT: 250px" alt="" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/rosalba/2743/r_workingarea.jpg" /&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rosalba/aggbug/90558.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rosalba Fiore</dc:creator>
            <guid>http://blogs.ugidotnet.org/rosalba/archive/2008/01/03/90558.aspx</guid>
            <pubDate>Fri, 04 Jan 2008 11:13:34 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rosalba/comments/90558.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rosalba/archive/2008/01/03/90558.aspx#feedback</comments>
            <slash:comments>10</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rosalba/comments/commentRss/90558.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rosalba/services/trackbacks/90558.aspx</trackback:ping>
        </item>
        <item>
            <title>Rosa' un articolo chiaro su lambda expression, Linq?</title>
            <link>http://blogs.ugidotnet.org/rosalba/archive/2007/07/23/86446.aspx</link>
            <description>&lt;P&gt;Le specifiche:&lt;/P&gt;
&lt;P&gt;Facile da leggere, non troppo lungo e con esempi di codice&lt;/P&gt;
&lt;P&gt;Eccovi accontentati,  di &lt;A href="http://blogs.msdn.com/ansonh"&gt;Anson Horton&lt;/A&gt;, che tanto per la cronaca &amp;#232; Program Manager in Microsoft da quasi sei anni, lavora nel team di C# fin dalla fondazione. L'articolo dal titolo impegnativo ma scorrevole:&lt;/P&gt;
&lt;H1 align=center&gt;&lt;FONT size=3&gt;"L'evoluzione di LINQ e l'impatto sulla progettazione di C#"&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;Per leggerlo seguite questo &lt;A href="http://msdn.microsoft.com/msdnmag/issues/07/06/CSharp30/Default.aspx?loc=it"&gt;link&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/rosalba/aggbug/86446.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rosalba Fiore</dc:creator>
            <guid>http://blogs.ugidotnet.org/rosalba/archive/2007/07/23/86446.aspx</guid>
            <pubDate>Tue, 24 Jul 2007 03:28:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rosalba/comments/86446.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rosalba/archive/2007/07/23/86446.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rosalba/comments/commentRss/86446.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rosalba/services/trackbacks/86446.aspx</trackback:ping>
        </item>
        <item>
            <title>Ieri Cobol ed oggi..</title>
            <link>http://blogs.ugidotnet.org/rosalba/archive/2007/07/19/86178.aspx</link>
            <description>&lt;P&gt;Mentre ieri parlavo di cose che hanno fatto storia, oggi qualche cosa su cosa si profila all'orizzonte,&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT face=Arial size=5&gt;&lt;STRONG&gt;F#&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;STRONG&gt;&lt;FONT face=Arial size=2&gt;direttamente dai &lt;A href="http://research.microsoft.com/fsharp/fsharp.aspx"&gt;laboratori di Microsoft Reaserch &lt;/A&gt;&amp;nbsp;(c'&amp;#232; l'area People se volete vedere i volti di chi ci lavora) maggiori news ed il blog di riferimento di&lt;A href="http://blogs.msdn.com/dsyme/"&gt; Don Syme&lt;/A&gt;. &lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;FONT face=Arial size=2&gt;Chiss&amp;#224; che ruolo avr&amp;#224; in futuro&amp;nbsp;nella nostra vita di sviluppatori!!!&amp;nbsp;Avr&amp;#224; uno sviluppo, a distanza di tanti anni ne parleremo/useremo ancora come il&amp;nbsp;Cobol ed il Fortran?&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;FONT face=Arial size=2&gt;Per ora io ancora non mi pronuncio :) per&amp;#242; la voce su Wiki esiste gi&amp;#224;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;"F#&lt;/B&gt; (pronounced F sharp) is a &lt;A title="Functional programming" href="http://en.wikipedia.org/wiki/Functional_programming"&gt;functional&lt;/A&gt; and &lt;A title="Object oriented" href="http://en.wikipedia.org/wiki/Object_oriented"&gt;object oriented&lt;/A&gt; &lt;A title="Programming language" href="http://en.wikipedia.org/wiki/Programming_language"&gt;programming language&lt;/A&gt; for the &lt;A title="Microsoft .NET" href="http://en.wikipedia.org/wiki/Microsoft_.NET"&gt;Microsoft .NET&lt;/A&gt; platform. A strength of F# is its setting within .NET. A key design aim is seamless .NET interoperability, both via direct use of .NET APIs from F# and authorship of natural .NET components in F#. Consequently, the main F# libraries are the .NET libraries themselves (e.g. DirectX, Windows Forms, and ASP.NET, as well as alternatives like &lt;A title="Gtk Sharp" href="http://en.wikipedia.org/wiki/Gtk_Sharp"&gt;Gtk#&lt;/A&gt;). A Visual Studio plugin provides a graphical development environment, including features such as background type-checking with feedback under the mouse, which is extremely helpful for those unfamiliar with &lt;A title="Type inference" href="http://en.wikipedia.org/wiki/Type_inference"&gt;type inference&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;F# is developed by &lt;A title="Microsoft Research" href="http://en.wikipedia.org/wiki/Microsoft_Research"&gt;Microsoft Research&lt;/A&gt;, and has a core language that is similar to that of the &lt;A title=Caml href="http://en.wikipedia.org/wiki/Caml"&gt;Caml&lt;/A&gt; language: both are members of the &lt;A title="ML programming language" href="http://en.wikipedia.org/wiki/ML_programming_language"&gt;ML programming language&lt;/A&gt; family.&lt;/P&gt;
&lt;P&gt;F# also provides a standard library of its own, designed to be largely compatible with the OCaml standard library. Since the two languages also share a common language subset, it can thus be quite practical to compile a single codebase with both. This enables core Caml code to be ported to the .NET world, and core F# code to run with OCaml. Maintaining this basic compatibility is one of the primary goals of the project.&lt;/P&gt;
&lt;P&gt;As a research project, F# demonstrates how .NET enables interoperability between different &lt;A title="Programming paradigm" href="http://en.wikipedia.org/wiki/Programming_paradigm"&gt;programming paradigms&lt;/A&gt;. It showcases a set of extensions to .NET's intermediate language IL, called ILX, which demonstrate how a strict &lt;A title=Currying href="http://en.wikipedia.org/wiki/Currying"&gt;curried&lt;/A&gt; functional language may be compiled efficiently."&lt;/P&gt;
&lt;P&gt;fonte: Wikipedia&lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/rosalba/aggbug/86178.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rosalba Fiore</dc:creator>
            <guid>http://blogs.ugidotnet.org/rosalba/archive/2007/07/19/86178.aspx</guid>
            <pubDate>Thu, 19 Jul 2007 22:58:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rosalba/comments/86178.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rosalba/archive/2007/07/19/86178.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rosalba/comments/commentRss/86178.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rosalba/services/trackbacks/86178.aspx</trackback:ping>
        </item>
        <item>
            <title>[70-340] In principio era tutto unmanaged</title>
            <link>http://blogs.ugidotnet.org/rosalba/archive/2007/05/29/79621.aspx</link>
            <description>&lt;p&gt;Non sempre possimo utilizzare l'ultima&amp;nbsp;novità anzi.. i compotenti COM, Win32 DLL sono ancora molto diffusi,&amp;nbsp;pensiamo solo al&amp;nbsp;se si tratta di&amp;nbsp;continuare a migliore prodotti di livello enterprise, in questi casi non sempre si può&amp;nbsp;ripartire da zero. &lt;/p&gt; &lt;p&gt;Quali sono i problemi di sicurezza in questi casi?&lt;/p&gt; &lt;ul&gt; &lt;li&gt;la CAS in questo caso non ci aiuta, il codice unmanaged ad essa sfugge  &lt;li&gt;nel codice che andiamo ad utilizzare effettivamente può esserci scritto di tutto e tanto per fare un esempio&amp;nbsp;possiamo anche&amp;nbsp;incorrere nel buffer overruns (detto anche buffer overflow)  &lt;li&gt;sono unsigned, quindi facilmente rimpiazzabili con cose non proprio buone e giuste&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Le regole principali da seguire in questi casi sono:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;validare l'input e l'output che viene passato o ottenuto da una libreria unmanaged  &lt;li&gt;verificare che il "chiamato" sia integro, ad esempio calcolando l'hash e verificandolo col precedente ad ogni chiamata  &lt;li&gt;nel caso di DLL specificar il path assoluto e non relativo utilizzando DLLImport&amp;nbsp;Attibute, che tra le altre cose si&amp;nbsp; occupa di:&lt;/li&gt; &lt;p&gt;•LoadLibrary (carica la dll in memoria) – Free (scarica la dll) &lt;p&gt;•GetProcAddress (ottiene un puntatore alla funzione richiesta) &lt;p&gt;•Marshalling (mapping e passaggio parametri)&lt;/p&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;Però se utilizziamo il path assoluto dobbiamo ricordarci che ci potrebbero essere problemi&amp;nbsp; relativamente l'hash con nuovi update del compotente&amp;nbsp; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Quindi invece di:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;using System.Runtime.InteropServices; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DllImport("user32.dll")] &lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Abbiamo:&amp;nbsp;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using System.Runtime.InteropServices;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;[DllImport(@"C:\windods\system32\user32.dll");&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;E su tutto ricordasi.. &lt;strong&gt;per far funzionare la nostra applicazione l'utilizzatore non deve necessariamante avere i privilegi dell'amministratore... ovvero ricordarsi della regola dei privilegi minimi !&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rosalba/aggbug/79621.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rosalba Fiore</dc:creator>
            <guid>http://blogs.ugidotnet.org/rosalba/archive/2007/05/29/79621.aspx</guid>
            <pubDate>Wed, 30 May 2007 07:02:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rosalba/comments/79621.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rosalba/archive/2007/05/29/79621.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rosalba/comments/commentRss/79621.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rosalba/services/trackbacks/79621.aspx</trackback:ping>
        </item>
        <item>
            <title>[70-340] La sicurezza dei web services</title>
            <link>http://blogs.ugidotnet.org/rosalba/archive/2007/05/20/78698.aspx</link>
            <description>&lt;p&gt;Una delle cose che più mi ha entusiasmato dei web services è la loro estrema praticità. Quando si creano più applicazioni che hanno delle funzionalità comuni si possono inscatolare in un web services e lo sviluppo è sicuramente più celere. &lt;/p&gt; &lt;p&gt;Quello che però alle volte sfugge è&amp;nbsp;"una delle sue maggiori virtù, SOAP tanto per capirci, è anche il suo tallone d'achille per la sicurezza". &lt;/p&gt; &lt;p&gt;Perchè sicurezza e cosa ci interessa in buona sostanza:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;l'identità del client  &lt;li&gt;messaggio valido ed integro durante la trasmissione  &lt;li&gt;privacy della comunicazione&amp;nbsp;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;In questa faq riportata da &lt;a href="http://blogs.ugidotnet.org/lbarbieri/archive/2004/11/30/6345.aspx"&gt;Lorenzo&lt;/a&gt; &amp;nbsp;a suo tempo si trovano molte informazioni sul mondo WSE ovvero quello che ci viene in soccorso in questi casi. Per ulteriori informazioni su SOAP,WSLD e Web Services vi consiglio questo suo &lt;a href="http://www.objectway.it/articles/0110_NNWebSrv.pdf"&gt;articolo&lt;/a&gt;&amp;nbsp;....ed immaginate che nel 2001 già parlava&amp;nbsp;di &lt;strong&gt;XAML&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;Ma che cosa è WSE? WSE = Web Services Enhancements ossia un tool per utilizzare la WS-Security con Asp.Net, dove per WS intendiamo Web Services Security Language ovvero uno standard per aggiungere l'autenticazione, firma e la criptazione alla comunicazione SOAP dei Web Services. &lt;/p&gt; &lt;p&gt;Ma WS è un set di definizioni e&amp;nbsp;complessi algoritmi per risolvere i tre punti indicati? No, è uno standard. &lt;/p&gt; &lt;p&gt;Descrive una serie di schema per la descrizione di SOAP:Header che aggiungono informazioni ai messaggi SOAP, tanto per farcene un'idea date un occhio allo schema&amp;nbsp;&amp;nbsp; &lt;a title="http://schemas.xmlsoap.org/ws/2002/07/secext/" href="http://schemas.xmlsoap.org/ws/2002/07/secext/"&gt;http://schemas.xmlsoap.org/ws/2002/07/secext/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Per capire meglio di cosa stiamo parlando conviene prima dare uno sguardo a &lt;a href="http://schemas.xmlsoap.org/ws/2002/12/secext/secext.xsd"&gt;XML Schema for WS-SecurityPolicy&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;Ma come fa il client ad autenticarsi? Ci sono tre&amp;nbsp;modalità, elenchiamone due:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;il client utilizza una trusting authority centralizzata e poi chiama il server  &lt;li&gt;il server si proccupa di ottenere il token per il client&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Quello che a noi ora interessa e cosa accade nel wsse. Supponiamo di utilizzare un X.509&lt;/p&gt; &lt;p&gt;&amp;lt;wsse: Security&lt;/p&gt; &lt;p&gt;xmlns:wsse=&lt;a href="http://schemas.xmlsoap.org.org/ws/2002/12/secext"&gt;http://schemas.xmlsoap.org.org/ws/2002/12/secext&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;lt;wsse:BinarySecurityToken &lt;/p&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;ValueType="wsee:X509v3"&lt;/font&gt;&lt;/p&gt; &lt;p&gt;EncodingType="wsse:Base64Binary"&amp;gt;&lt;/p&gt; &lt;p&gt;Idjfai......&lt;/p&gt; &lt;p&gt;&amp;lt;/wsse:BinarySecurityToken&amp;gt;&lt;/p&gt; &lt;p&gt;&amp;lt;/wsse: Security&amp;gt;&lt;/p&gt; &lt;p&gt;Se utilizzassimo&amp;nbsp;i ticket&amp;nbsp;Kerberos dovremmo sostituire con &lt;font color="#ff0000"&gt;ValueType="wsee:Kerberosv5ST"&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Per maggiori informazioni sull'interoperabilità di WS tutte le news le trovate su &lt;a href="http://www.ws-i.org/"&gt;ws-i&lt;/a&gt;&amp;nbsp;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Ma WSE nel nostro Visual Studio dove si trova? Non è già "compreso" occorre scaricarlo all'indirizzo &lt;a title="http://msdn2.microsoft.com/it-it/webservices/aa740641(en-us).aspx" href="http://msdn2.microsoft.com/it-it/webservices/aa740641(en-us).aspx"&gt;http://msdn2.microsoft.com/it-it/webservices/aa740641(en-us).aspx&lt;/a&gt;&amp;nbsp;in questo post facciamo riferimento alla vesione 2.0.&lt;/p&gt; &lt;p&gt;Le classi più importanti:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;WebServicesClientProtocol  &lt;li&gt;SoapContext  &lt;li&gt;Security  &lt;li&gt;UsernameToken  &lt;li&gt;X509SecurityToken&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Mentre i namespace sono: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Microsoft.WebServices2  &lt;li&gt;Microsoft.Web.Services2.Security.Token&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Ma prima d'attentrari, magari nel prossimo post su cosa sono e come si usano, vediamo per concludere come si aggiunge la potenza di WSE ad un nostro progetto:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;installiamo WSE scegliendo l'opzione add-in  &lt;li&gt;apriamo/creiamo un progetto VS  &lt;li&gt;tasto destro sul progetto e scegliamo WSE Setting 2.0  &lt;li&gt;selezioniamo Permetti WSW per questo progetto&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;E cosa posso dire adesso....io studio ancora per un pò prima d'andare a dormire magari riesco a vedere anche qualcosa in televisone,&amp;nbsp;ed a voi "Buona settimana".&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rosalba/aggbug/78698.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rosalba Fiore</dc:creator>
            <guid>http://blogs.ugidotnet.org/rosalba/archive/2007/05/20/78698.aspx</guid>
            <pubDate>Mon, 21 May 2007 09:05:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rosalba/comments/78698.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rosalba/archive/2007/05/20/78698.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rosalba/comments/commentRss/78698.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rosalba/services/trackbacks/78698.aspx</trackback:ping>
        </item>
        <item>
            <title>[70-340] RSA</title>
            <link>http://blogs.ugidotnet.org/rosalba/archive/2007/05/17/78514.aspx</link>
            <description>&lt;p&gt;In questo post non mi soffermerò sulla crittografia asimmetrica, ricordo solo che&amp;nbsp; il principio ha una solida base matematica che lo giustifica. Il primo e più famoso algoritmo è l'RSA dalle iniziali di Ron Rivest, Adi Shamir e Len Adleman del MIT. Storicamente prima di essere brevettato dal MIT fu ideato dal matematico britannico &lt;strong&gt;Clifford Cocks&lt;/strong&gt; (piccola nota a margine.. le scoperte matematiche pure non possono essere brevettate sono considerate patrimonio dell'umanità..) quindi io lo chiamerei &lt;strong&gt;CRSA...&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;La classe del .Net che si occupa di tutte queste problematiche è l'AsymmetricAlgorithm e della quale ne abbiamo due implementazioni:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;RSACryptoServiceProvider: q uesta è proprio l'implementazione dell'algoritmo RSA. Ha alcune proprietà caratteristiche che si occupano del get e del set:  &lt;ul&gt; &lt;li&gt;PersistKeyInCsp  &lt;li&gt;UseMachineKeyStore&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;DSACryptoServiceProvider&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Tra i metodi della RSACryptoServiceProvider c'è la FromXmlString che ci permette d'importare la key pair da una stringa XML.&lt;/p&gt; &lt;p&gt;Bello l'XML ma&amp;nbsp; &lt;a href="http://www.microsoft.it/"&gt;Microsoft&lt;/a&gt; ci avvisa che: &lt;/p&gt; &lt;p&gt;"&lt;em&gt;Mantenere una stringa XML contenente una chiave privata in una posizione non protetta è una minaccia alla protezione. La protezione dell'applicazione può essere compromessa se una terza parte non autorizzata può accedere alla chiave privata. Per mantenere una chiave privata in modo sicuro, utilizzare un contenitore di chiavi protetto. Per ulteriori informazioni sul mantenimento delle chiavi private in un contenitore di chiavi, vedere &lt;/em&gt;&lt;a href="http://msdn2.microsoft.com/it-it/library/tswxhw92%28VS.80%29.aspx"&gt;&lt;em&gt;Procedura: archiviare chiavi asimmetriche in un contenitore di chiavi&lt;/em&gt;&lt;/a&gt;"&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Ma come "inviamo al mondo" la nostra chiave pubblica ...&lt;/p&gt; &lt;p&gt;RSACryptoServiceProvider mrsa=new RSACryptoServiceProvider();&lt;/p&gt; &lt;p&gt;RSAParameters publicKey=mrsa.ExportParameters(false);&lt;/p&gt; &lt;p&gt;(nota abbiamo il FromXmlString ci sarà anche contrario... certo&lt;/p&gt; &lt;p&gt;RSACryptoServiceProvider.ToXmlString(true);)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Rapidamente vediamo (&amp;nbsp;i dettagli nella procedura indicata sopra) che una volta create le chivi private occorre aggiungere:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;un oggetto CspParameters  &lt;li&gt;specificare la proprietà CspParameters.KeyContainerName  &lt;li&gt;passare al&amp;nbsp;RSACryptoServiceProvider il CspParameters creato  &lt;li&gt;e settare a true la proprietà PersistKeyInCsp&amp;nbsp;dell'istanza del RSACryptoServiceProvider&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Vista l'ora vado a dormire ...la prossima volta vedremo qualcosa sul data padding&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rosalba/aggbug/78514.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rosalba Fiore</dc:creator>
            <guid>http://blogs.ugidotnet.org/rosalba/archive/2007/05/17/78514.aspx</guid>
            <pubDate>Fri, 18 May 2007 10:12:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rosalba/comments/78514.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rosalba/archive/2007/05/17/78514.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rosalba/comments/commentRss/78514.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rosalba/services/trackbacks/78514.aspx</trackback:ping>
        </item>
        <item>
            <title>[70-340] Strong Name e GAC</title>
            <link>http://blogs.ugidotnet.org/rosalba/archive/2007/05/08/77695.aspx</link>
            <description>&lt;P&gt;Sospendendo un attimo la CAS, affrontiamo insieme il discorso dello strong name e dalla GAC.&lt;/P&gt;
&lt;P&gt;Io ho un nome ed un cognome cos&amp;#236; anche i nostri assembly, anzi loro hanno molte pi&amp;#249; informazioni oltre il nome hanno:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;la versione 
&lt;LI&gt;la cultura 
&lt;LI&gt;public key 
&lt;LI&gt;digital signature&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Tutto questo torna utile anche dal punto della sicurezza e capiremo dopo il perch&amp;#232;. Prima di tutto come gli diamo la public key e la digital signature? Semplice a dirsi sn.exe (strong name tool). Ed a farsi? &lt;/P&gt;
&lt;P&gt;Ma ancor prima dove si trova:&lt;/P&gt;
&lt;P&gt;C:\Programmi\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin&lt;/P&gt;
&lt;P&gt;Passaggi: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;generiamo l'snk:&amp;nbsp;dal prompt dei comandi di VS.Net 2003 per creare un file .snk dobbiamo di nome "chiavi.snk" &lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;scrivere sn -k chiavi.snk &lt;/P&gt;
&lt;P&gt;viene generato e salvato nella directory corrente&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;LI&gt;associamolo alla nostra &lt;STRONG&gt;.dll&lt;/STRONG&gt;: questo lo facciamo nell'Assembly.Info &lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;[assembly: AssemblyCulture("")]&lt;BR&gt;[assembly: AssemblyVersion("1.0.0.0")]&lt;BR&gt;[assembly: AssemblyFileVersion("1.0.0.0")]&lt;BR&gt;[assembly: AssemblyDelaySign(false)]&lt;BR&gt;[assembly: AssemblyKeyFile(@"..\..\chiave.snk")]&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;LI&gt;verifichiamo che abbiamo fatto bene: &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scrivere sn -v "C:\IlPercorso\Esempio.dll"&lt;/P&gt;
&lt;P&gt;Se ci restituisce una cosa del genere utilit&amp;#224; nome sicuro di Microsoft&amp;nbsp; vuol dire che abbiamo fatto bene, altrimenti :)&lt;/P&gt;
&lt;P&gt;Ora ditemi voi una volta che ho assegnato tutte queste cose &amp;#232; pi&amp;#249; difficile utilizzare in modo improprio o "impersonare" il nostro assembly? Direi proprio di s&amp;#236;.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I parametri del tool sn sono tutti &lt;A href="http://msdn2.microsoft.com/it-it/library/k5b5tt23(vs.80).aspx"&gt;qui&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Vediamo ora qualcosa sulla GAC (Global Assembly Cache)...&lt;/P&gt;
&lt;P&gt;Nel bene e nel male una delle cose che a seconda dei casi pu&amp;#242; essere considerata un beno o un male &amp;#232; l'AVANTI AVANTI ossia wizard etc. Certo automatizzare l'installazione delle nostre soluzioni &amp;#232; una gran bella comodit&amp;#224; delle applicazioni create col .NET framework ma se il nostro scopo &amp;#232; quello di lavorare in sicurezza? Meglio utilizzare la GAC che sta l&amp;#236; proprio per questo.&amp;nbsp;Se installiamo un assembly in esso pi&amp;#249; applicazioni possono utilizzarlo. Immaginiamo domani di fare una release di update? E' pi&amp;#249; comodo modificare UNA cosa in UN posto SOLO che cambiare lo stesso assembly in tutte le cartelle. Bello, bellissimo ma vediamo come si procede.&lt;/P&gt;
&lt;P&gt;Allora i metodi sono:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;automaticamente : 
&lt;UL&gt;
&lt;LI&gt;windows installer 
&lt;LI&gt;chiamando direttamente le APIs 
&lt;LI&gt;da linea di comando utilizzando un batch file ed la GacUtil&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;manualmente: 
&lt;UL&gt;
&lt;LI&gt;col .Net Framework Configuration tool &amp;nbsp; 
&lt;LI&gt;da linea di comando 
&lt;LI&gt;windows explorer&amp;nbsp;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Windows Explorer&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Vista l'ora vediamo prima come si fa con la windows explorer: basta aprire una cartella o windows explorer &amp;nbsp;e&amp;nbsp;nella barra dell'indirizzo &amp;nbsp;&amp;nbsp; %windir%\assembly e grazie a SHFusion.dll vediamo tutti i nostri assembly che risiedono nella GAC.. ed ora? Un bel copia ed incolla del nostro assembly :)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Complichiamo un p&amp;#242; le cose ed utilizziamo il Configuration tool&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Configuration Tool&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;E' lo stesso di cui parlavo ieri dunque ricordiamo Start-Pannello di Controllo- Strumenti d'amministrazione - .Net Configuration1.1 &lt;/P&gt;
&lt;P&gt;tasto destro su Cache Assembly ed aggiungiamo il nostro assembly &lt;/P&gt;
&lt;P&gt;Per gli altri magari domani... continuo a studiare ma non penso di riuscire a postare prima delle 24.. dunque a domani :)&lt;/P&gt;
&lt;P&gt;Ps. Maggiori informazioni sull'esame 70-340: Implementing Security for Applications with Microsoft Visual C# .NET &lt;A href="http://www.microsoft.com/learning/exams/70-340.mspx"&gt;qui&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/rosalba/aggbug/77695.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rosalba Fiore</dc:creator>
            <guid>http://blogs.ugidotnet.org/rosalba/archive/2007/05/08/77695.aspx</guid>
            <pubDate>Wed, 09 May 2007 10:11:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rosalba/comments/77695.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rosalba/archive/2007/05/08/77695.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rosalba/comments/commentRss/77695.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rosalba/services/trackbacks/77695.aspx</trackback:ping>
        </item>
        <item>
            <title>[70-340] Questo s&amp;igrave; e questo no con la CAS</title>
            <link>http://blogs.ugidotnet.org/rosalba/archive/2007/05/08/77686.aspx</link>
            <description>&lt;p&gt;Oggi pomeriggio lo dedico tutto alla preparazione dell'esame quindi mano mano posto un p&amp;#242; di cose. &lt;/p&gt; &lt;p&gt;Allora ritorniamo alla CAS Declarations... ok ma che scriviamo?&lt;/p&gt; &lt;p&gt;Ad esempio in C#&lt;/p&gt; &lt;p&gt;[assembly:RegistryPermission(SecurityAction.RequestMinumun,Read=@"HKEY_LOCAL_MACHINE\Software")]&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;[assembly:FileIOPermissionAttibute(SecurityAction.RequestMinimun Read=@"C:\boot.ini")]&lt;/p&gt; &lt;p&gt;In sostanza i tipi di permessi dichiarativi degli assembly sono:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;SecurityAction.RequestMinimun (permessi che deve soddisfare per l'esecuzione  se il nostro assembly non soddisfa questi viene lanciata un'eccezione)  &lt;li&gt;SecurityAction.RequestOptional (non abbiamo eccezione)  &lt;li&gt;SecurityAcrion.RequestRefuse (non abbiamo eccezione)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Vediamo un modo carino di utilizzare la SecurityAction&lt;/p&gt; &lt;ol&gt; &lt;li&gt;[FileIOPermission(SecurityAction.Deny,All=@"C:\PostdiUgi\")]&lt;/li&gt; &lt;li&gt;[WebPermission(SecurityAction.PermitOnly, ConnectPattern=@"http://www\.postdiugi\.it/.*)]&lt;/li&gt;&lt;/ol&gt; &lt;h4&gt;&lt;strong&gt;Secondo voi che succeder&amp;#224;? &lt;/strong&gt;&lt;/h4&gt; &lt;p&gt;Comunque tutto questo &amp;#232; statico e se volessimo generare qualcosa dinamicamente come ad esempio l'indirizzo web? Occorre ritornare alle Imperatively Limit Permissios? &lt;/p&gt; &lt;p&gt;Quindi la seconda diventa&lt;/p&gt; &lt;p&gt;Regex connectPattern=new Regex(@"http://www\.postdiugi\.it/.*);&lt;/p&gt; &lt;p&gt;WebPermission webPerm=new WebPermission(NetworkAccess.Connect,connectPattern);&lt;/p&gt; &lt;p&gt;webPerm.PermitOnly();&lt;/p&gt; &lt;p&gt;...&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;A pi&amp;#249; tardi!&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rosalba/aggbug/77686.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rosalba Fiore</dc:creator>
            <guid>http://blogs.ugidotnet.org/rosalba/archive/2007/05/08/77686.aspx</guid>
            <pubDate>Wed, 09 May 2007 06:56:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rosalba/comments/77686.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rosalba/archive/2007/05/08/77686.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rosalba/comments/commentRss/77686.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rosalba/services/trackbacks/77686.aspx</trackback:ping>
        </item>
        <item>
            <title>[70-340] CAS e la pagina 5 di Google</title>
            <link>http://blogs.ugidotnet.org/rosalba/archive/2007/05/06/77497.aspx</link>
            <description>&lt;P align=justify&gt;Ripassando per l'esame ho provato a fare una piccola ricerca su Google, inserisco la parola CAS e mi &amp;#232; toccato spulciare fino a pagina 5 per iniziare a vedere qualche cosa d'attinente per il resto&amp;nbsp;club alpini, societ&amp;#224; di costruzioni etc.&lt;IMG src="http://www.tuttogratis.it/img/emoticons/_splash.gif"&gt;&amp;nbsp; ovviamente totalmente differente il risultato se inserisco Code Access Security.&lt;/P&gt;
&lt;P align=justify&gt;L'argomento &amp;#232; talmente interessante che merita un post e dunque.. vediamo cosa posso aggiungere dopo le &lt;A href="http://download.microsoft.com/download/c/9/9/c9946553-e0ae-4795-a2fd-851d9ba27dd7/WindowsSecurity.ppt"&gt;slide&lt;/A&gt; di &lt;A href="http://www.microsoft.com/italy/msdn/contattaci/fabio_santini.asp"&gt;Santini&lt;/A&gt; e &lt;A href="http://blogs.ugidotnet.org/raffaele/"&gt;Rialdi&lt;/A&gt; che per fortuna sono ancora disponibili per il download. &lt;/P&gt;
&lt;P align=justify&gt;Prima d'attentrarci nei meandri dell'argomento in&amp;nbsp;un &lt;A href="http://blogs.ugidotnet.org/rosalba/archive/2006/06/22/43339.aspx"&gt;mio vecchio post&lt;/A&gt; indicavo un articolo su&amp;nbsp;msdn che spiegava il perch&amp;#232; &amp;#232; saggio utilizzare i privilegi minimi. &lt;/P&gt;
&lt;P align=justify&gt;Quando vogliamo restringere la pericolisit&amp;#224;&amp;nbsp;del "danno" di un'applicazione i principali strumenti sono l'utilizzo sapiente della RBS e la CAS. Se per il codice unmanaged la scelta obbligata &amp;#232; la prima per il codice manged utilizzando sapientemente la CAS &amp;#232; possibile granulare correttamente cosa il nostro codice pu&amp;#242; fare ma anche cosa l'utente pu&amp;#242; fargli fare.&lt;/P&gt;
&lt;P align=justify&gt;Il meccanismo utilizzato &amp;#232; quello dell"&lt;STRONG&gt;evidence"&lt;/STRONG&gt; ossia un set d'informazioni che identificano con tutta una serie d'informazioni un assembly.&amp;nbsp; Le informazioni&amp;nbsp; spaziano dalla directory nella quale esso si trova (application directory), strong name, all'hash queste ed altre informazioni sono membri della System.Security.Policy. Comunque le evidence sono di due tipi le host (es. origine:directory, Url o sito)&amp;nbsp;e le assembly, queste ultime sono del tipo customer user o definite dal developer. Sulle slide che ho ricordato prima trovate riferimenti alla code group&amp;nbsp; ed ai permessi.&lt;/P&gt;
&lt;P align=justify&gt;Ci potremmo chiedere se la CAS sostituisce l'operating system securitity? La risposta &amp;#232; NO essa si pone come uno strato su di essa, dunque &amp;#232; un complemento e &amp;nbsp;non un suo sostituto.&lt;/P&gt;
&lt;P align=justify&gt;Ok, tutto questo &amp;#232; bello ma come faccio a sapere se&amp;nbsp;un assembly &amp;#232; attendibile e come&amp;nbsp;si configurano i permessi? &amp;nbsp;Sempre utilizzando .Net Configuration tool si utilizza il nodo CRITERI DI PROTEZIONE RUNTIME&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV align=justify&gt;&lt;STRONG&gt;Valutare l'assembly&lt;/STRONG&gt;: facciamo clic col tasto destro su di esso e&amp;nbsp;scegliamo Valuta Assembly seguendo passo passo il wizard vedremo i permessi che esso ha;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV align=justify&gt;&lt;STRONG&gt;Nuovi permessi ed assegnazione&lt;/STRONG&gt;: E per aggiungerne? Prima cosa dobbiamo decidere a che livello vogliamo impostarli enterprise, computer, user (il primo si applica a tutta la rete, il secondo a tutte le applicazioni sul PC, il secondo all'utente&amp;nbsp;singolo) Es. presi da mania di grandezza supponiamo di voler creare un nuovo set di permessi che porta il nostro nome per tutta la rete, quindi scegliamo il nodo Enterprise e poi Set di Autorizzazioni, seguendo passo passo la procedura impostiamo prima il nome del set in questo caso "Autorizzazioni di Rosalba" e poi che tipo di autorizzazione dobbiamo dare (dns, internet, contatore di prestazioni, stampa in corso etc etc) e per ciascuna le propriet&amp;#224;. Al termine vedremo sotto le altre (Full Trust, Execution etc) anche quella che abbiamo appena creato. A questo punto come l'assegniamo? Sempre nel nodo Enterprise scegliamo Gruppi di Codice, All Code dunque tasto destro e poi&amp;nbsp; Nuovo, dunque creiamo un nuovo gruppo di codice e specifichiamo il tipo di condizione per il gruppo di codice (le evidence dette prima ed anche un livello personalizzato mediante XML da scrivere o da importare) dunque gli assegniamo il set di autorizzazioni dunque "Autorizzazioni di Rosalba" e poi fine.&amp;nbsp;Ora mi ridimensiono pure io!&amp;nbsp;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P align=justify&gt;Questa &amp;#232; la strada facile se vogliamo/dobbiamo utilizzare caspol.exe i parametri sono effettivamente un p&amp;#242; tanti da postare dunque vi rimando a questo in&amp;nbsp;italiano&amp;nbsp;di &lt;A href="http://msdn2.microsoft.com/it-it/library/cb6t8dtz(vs.80).aspx"&gt;MSDN&lt;/A&gt; &lt;/P&gt;
&lt;P align=justify&gt;Piccola nota fino ad ora ho utilizzato solo Windows XP PRO, dunque le prove le potete fare tranquillamente anche se non avete Windows Server 2003. &lt;/P&gt;
&lt;P align=justify&gt;Ma se poi ci&amp;#242; che &amp;#232; previsto dalla CAS non permette alla nostra applicazione? In questo caso ricorriamo alla CAS Assmbly Declarations. &lt;/P&gt;
&lt;P align=justify&gt;Le ragioni:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV align=justify&gt;gli amministratori utilizzando il tool Permview possono analizzare i permessi che l'assembly richiede, dunque grazie ai metadati pu&amp;#242; risparmiarsi di leggere pagine e pagine della documentazione che accompagna la nostra applicazione &lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV align=justify&gt;le risorse utlizzare saranno solo quelle che la nostra applicazione ha il permesso di utilizzare, e l'amministratore capir&amp;#224; dall'eccezione lanciata che cosa &amp;#232; successo sempre che ci siamo ricordati di utilizzare la&amp;nbsp;SecurityAction.RequestMinimum &lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV align=justify&gt;un attacco alla nostra applicazione non provoca grossi danni essendo essa in una piccola sandbox &lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV align=justify&gt;sappiamo esattamente i permessi che essa richiede poich&amp;#232;&amp;nbsp;ogni volta che dobbiamo aggiungere una doppiamo dichiararla con&amp;nbsp;SecurityAction.RequestOptional altrimenti viene trovata un'eccezione di tipo System.Security.Policy.PolicyException.&amp;nbsp;&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P align=justify&gt;Il resto...magari la prossima volta oggi &amp;#232; domenica mi&amp;nbsp;&lt;IMG src="http://www.tuttogratis.it/img/emoticons/_regalo.gif"&gt;&amp;nbsp;un p&amp;#242; di riposo.&lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/rosalba/aggbug/77497.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rosalba Fiore</dc:creator>
            <guid>http://blogs.ugidotnet.org/rosalba/archive/2007/05/06/77497.aspx</guid>
            <pubDate>Mon, 07 May 2007 06:00:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rosalba/comments/77497.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rosalba/archive/2007/05/06/77497.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rosalba/comments/commentRss/77497.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rosalba/services/trackbacks/77497.aspx</trackback:ping>
        </item>
    </channel>
</rss>