Domanda

A parte il fatto che il codice stesso può accedere direttamente alla memoria. Quali sono le altre implicazioni di utilizzare il "/ non sicuro" flag di compilazione e la parola chiave "fisso"? Ci sono dei bussare effetti legati alla firma del codice e la distribuzione del mio exe (la mia app è solo per desktop)?

(Non si tratta di se o non dovrei fare questo, il perché è coperto nella mia interrogazione qui )

È stato utile?

Soluzione

Il codice unsafe non è verificabile, quindi bisogna essere consapevoli di questo. In un ambiente di completa fiducia, che non è un grosso problema, ma se si dispone di altri ambienti che hanno un set di autorizzazioni più ristretto, allora questo potrebbe avere un impatto lì.

Altri suggerimenti

È possibile inserire le implicazioni in due secchi.

Il primo è come influisce l'ambiente di applicazione. Utilizzando il codice non sicuro è necessario che il gruppo di essere eseguito in un ambiente pieno di fiducia. Non è possibile per l'esecuzione in un ambiente ristretto, come certo Clicca volta le impostazioni di sicurezza. Il motivo è che il codice non sicuro impedisce il CLR da garantire la sicurezza tipo. Fare clic una volta però senza restrizioni di sicurezza non dovrebbe avere un problema.

Il secondo è ciò che significa per il tuo modo di codice. Utilizzando codice non sicuro in genere comporta l'uso di puntatori e in particolare, utilizzando per il dispiegamento di avanzati eseguito tramite PInvoke. Non c'è niente di intrinsecamente sbagliato con una di queste azioni, però. Si richiede solo molto più comprensione del CLR e smistamento di codice "sicuro" lo fa. Oggetto pinning è un grande esempio di conoscenza che ci si bisogno di avere una solida conoscenza prima di iniziare a utilizzare queste funzionalità.

Per aggiungere al riferimento di Jared di opporsi pinning ...

Quando si utilizza puntatori per accedere alla memoria direttamente in C #, si sono vulnerabili alla CLR lo spostamento di un oggetto attorno in memoria in fase di esecuzione. Ciò significa che il puntatore può tutto ad un punto improvviso alla sezione sbagliata della memoria. Il parola chiave fisso sarà pin l'oggetto in memoria in modo che questo problema può essere evitato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top