rosalba

Il blog di Rosalba Fiore [Microsoft Certified Trainer]
posts - 398, comments - 583, trackbacks - 4693

My Links

News

Article Categories

Archives

Post Categories

Image Galleries

Al primo posto

Alcune delle Donne Attive

Alcuni dei ferri del mestiere di una MCT

Certificazioni Informatiche

elearning...funziona solo in alcuni casi!!!

Eventi

Gli MCT nel mondo

La mia zone

Link tecnici

Link un pò così

Panoramica altre Community

Post-it Articoli e post di MCT, MVP ect

Windows Vista

[70-340] In principio era tutto unmanaged

Non sempre possimo utilizzare l'ultima novità anzi.. i compotenti COM, Win32 DLL sono ancora molto diffusi, pensiamo solo al se si tratta di continuare a migliore prodotti di livello enterprise, in questi casi non sempre si può ripartire da zero.

Quali sono i problemi di sicurezza in questi casi?

  • la CAS in questo caso non ci aiuta, il codice unmanaged ad essa sfugge
  • nel codice che andiamo ad utilizzare effettivamente può esserci scritto di tutto e tanto per fare un esempio possiamo anche incorrere nel buffer overruns (detto anche buffer overflow)
  • sono unsigned, quindi facilmente rimpiazzabili con cose non proprio buone e giuste

 

Le regole principali da seguire in questi casi sono:

  • validare l'input e l'output che viene passato o ottenuto da una libreria unmanaged
  • verificare che il "chiamato" sia integro, ad esempio calcolando l'hash e verificandolo col precedente ad ogni chiamata
  • nel caso di DLL specificar il path assoluto e non relativo utilizzando DLLImport Attibute, che tra le altre cose si  occupa di:
  • •LoadLibrary (carica la dll in memoria) – Free (scarica la dll)

    •GetProcAddress (ottiene un puntatore alla funzione richiesta)

    •Marshalling (mapping e passaggio parametri)

Però se utilizziamo il path assoluto dobbiamo ricordarci che ci potrebbero essere problemi  relativamente l'hash con nuovi update del compotente 

             Quindi invece di:

              using System.Runtime.InteropServices;

             [DllImport("user32.dll")]

          

           Abbiamo:  

           using System.Runtime.InteropServices; 

           [DllImport(@"C:\windods\system32\user32.dll");

 

E su tutto ricordasi.. per far funzionare la nostra applicazione l'utilizzatore non deve necessariamante avere i privilegi dell'amministratore... ovvero ricordarsi della regola dei privilegi minimi !

Print | posted on martedì 29 maggio 2007 22:02 | Filed Under [ C# ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET