2012-06-19 9 views
7

Sto sviluppando un'app in Visual Studio 2010, la mia app è costantemente connessa a Internet. Devo attivare This is a full trust application nella scheda Sicurezza?Devo selezionare: Questa è un'applicazione completa di fiducia

Se sì, cosa significa esattamente? Stavo leggendo msdn docs ma non riesco a capirlo. Ho bisogno di qualcosa in poche righe su quando utilizzare questa funzione.

risposta

8

Non preoccuparti, non influenza la sicurezza della tua connessione Internet, ma influenza il modo in cui .NET framework tratta la tua applicazione. Quindi sì, puoi attivarlo senza pericolo, ma se possibile dovresti dichiarare nel tuo codice quale livello di accesso la tua applicazione ha bisogno per affinare la sicurezza. Per spiegare i dettagli:

Fiducia totale significa che l'applicazione richiede tutti i diritti forniti dal framework .NET. Come sviluppatore, dichiarare quale livello di attendibilità della tua applicazione ha bisogno per poter essere eseguito, questo è noto come "code access security". La sicurezza di accesso al codice significa che stai dicendo al compilatore tramite attributi quale tipo di operazione richiede il tuo codice per avere successo.

Il framework .NET a sua volta stima quanta fiducia debba essere concessa all'applicazione: Ad esempio, se si distribuisce l'applicazione su un computer remoto, accessibile tramite una condivisione di rete al di fuori dell'intranet *), il .NET Framework fornisce meno di "Fiducia totale". Questo è noto come modello di sicurezza "evidence based" , implementato tramite il cosiddetto codice gestito .

codice gestito significa che l'applicazione .NET viene compilato in MSIL (M ICRO s di oft ho ntermediate L anguage) e "just in time" (cioè proprio quando lo si esegue, a meno che non si scelga di create native code explicitly via NGEN before execution) in linguaggio macchina specifico della CPU. Ciò consente di stabilire un ulteriore livello di astrazione, che a sua volta consente a .NET Framework di controllare cosa fa il codice e consentirlo o, in caso contrario, di generare un'eccezione di sicurezza.

Tutto il codice che scrivi per il framework .NET in una delle lingue C# o VB.NET è per codice gestito predefinito. Tuttavia, vi sono (molto rare) situazioni in cui si desidera incorporare il codice non gestito, noto anche come "codice non sicuro" (nella terminologia .NET). Un modo è quello di creare una sezione "non sicura" nel tuo codice (che qui cito solo per completezza, ad esempio nel caso in cui potresti averlo visto in codice sorgente).

Come già detto, si specifica cosa fa il codice tramite gli attributi, ma è anche possibile modificare le regole applicabili al computer locale per modificare questo comportamento tramite le impostazioni di sicurezza .NET. Di solito è una buona idea specificare nel modo più preciso possibile quali siano i diritti richiesti dall'applicazione e il più restrittivo possibile.

Se siete interessati, potete trovare maggiori qui: Exploring the .NET Framework Security Model

*) Grazie per il suggerimento, Damien! In effetti, le versioni precedenti del framework hanno dato meno risorse alla rete (condivisioni di rete), mentre le connessioni .NET 4 desktop e intranet locali hanno piena fiducia.

+1

Re: condivisione di rete, modificata in [.NET 4] (http://msdn.microsoft.com/en-us/library/ff527276.aspx): "Le applicazioni Intranet desktop e locali sono garantite con piena fiducia." –

+0

Grazie a questa risposta dettagliata –

Problemi correlati