Kódellenőrzés
A .NET-futtatókörnyezet szigorúan figyel arra, milyen kód futtatására akarják rábírni. Első lépésben információt gyűjt annak származási helyéről, készítőjének adatairól, vagyis feltérképezi a kód azonosítására szolgáló információkat. Megvizsgálja, hogy honnan származik a programkód: internetről letöltött állományról, lokális merevlemezen tárolt vagy esetleg megosztott hálózati erőforrásról van-e szó. Ezután szigorúbban is megvizsgálja az állományokat, kriptográfiai jegyeket keresve. Ilyen lehet a kód "ujjlenyomata" vagy a készítőjének digitális aláírása. Ezután összeveti ezeket az adatokat a kódokra vonatkozó házirend szabályaival, és eldönti, hogy az adott programkód futtatható-e, vagy sem.
A .NET által bevezetett "erős név" (strong name) a kódok pontosabb azonosítását segíti. Ez tulajdonképpen a kódnak egy olyan digitális aláírása, amely nemcsak a készítőjére, hanem a verziószámára is vonatkozik, egyértelműen megjelölve azt. Az "erős név" nemcsak a kód eredetét igazolja, hanem felderíthetővé teszi számunkra bárminemű megváltoztatásának tényét is.
Szerepkör-ellenőrzés
Gyakran nem csupán kód-, hanem alkalmazásszintű jogosultság-ellenőrzésre is szükség van. Nemcsak azt szeretnénk megvizsgálni, hogy az adott programkód futtatható-e egyáltalán, hanem azt is, hogy a programot használó személy milyen dialógusablakot láthat, milyen funkciókat használhat fel. Így természetesen további, programfunkció- és metódusszintű ellenőrzésre is szükség van. Ennek támogatására vezette be a .NET keretrendszer a szerepkörfüggő (role-based) ellenőrzést.
Egy számla- és raktárprogram-kezelő alkalmazás esetében nem minden felhasználó rendelkezik azonos szerepkörrel. Van, aki csak a kimenő számlákat képes felvinni, van, aki törölni is tudja azokat, és akad, aki mindössze azt tudja ellenőrizni, hogy az adott termékből van-e még raktáron. Régebben az ilyen igény megvalósítására a programozó telerakta a programkódot ellenőrzésekkel, feltételekkel, elágazásokkal, egy-egy rész többször is szerepelt a programban aszerint, hogy melyik felhasználó futatta az alkalmazást.
A .NET keretrendszer egyszerűbb utat kínál a programozó számára. Első lépésként elérhetővé teszi a kódot futtató személy azonosítóinak (Identity) lekérdezését. Második lépésként e mellé felsorolhatjuk az adott személy alkalmazásra vonatkozó jogait, szerepköreit (Roles). Így megkapjuk a kívánt "főszereplő" (Principal) objektumot, amely azután bármely sorból lekérdezhető és ellenőrizhető. A fejlesztőnek tehát csak meg kell jelölnie, hogy egy adott metódust milyen szerepkörrel rendelkező felhasználó hívhat meg, a .NET futtatókörnyezete minden más lépést automatikusan elvégez helyette.
Biztonságos kommunikáció
Ha már rendbe szedtük a kódunk futtatásával és alkalmazásunk funkcióinak elérésével kapcsolatos jogosultságokat, akkor még meg kell oldanunk a biztonságos kapcsolódást más rendszerekhez. A .NET keretrendszer tartalmaz minden olyan eszközt, amellyel nemzetközileg elfogadott szabványokon alapuló, biztonságos kommunikáció alakítható ki bármely rendszerrel. Ha digitális aláírásról, digitális kulcs alapján történő titkosításról, jelszavak biztonságos tárolásáról van szó, a .NET fejlesztőkörnyezete lehetőséget biztosít szabványos PKI-megoldások alkalmazására, chipkártyák vagy az újabban elterjedőben lévő USB-token felhasználására.
A biztonságos kommunikációs csatornák kialakítására SSL, illetve HTTPS típusú webszolgáltatás-megoldásokat alkalmazhatunk, nemcsak az interneten, hanem a belső hálózaton is. A .NET-fejlesztőkörnyezet által felkínált megoldásban így nem csupán védett csatornán keresztül kapcsoljuk össze a rendszereket, de azok digitális kulcsok felhasználásával azonosíthatják is egymást, lehetetlenné téve az üzenetváltás lehallgatását és hamis üzenetek küldését.
Mint a fenti példákból is látható, a .NET keretrendszer építőköveiből egyszerűen alakíthatunk ki összetett, nagy biztonsági fokkal rendelkező rendszereket. A Grepton belső .NET-szabványában és az általa kialakított .NET-rendszerekben sikerrel használja fel a .NET biztonsági építőkockáit. Az új technológiával ismerkedő fejlesztőknek tehát csak azt ajánlhatjuk, hogy a Microsoft .NET által bevezetett új nyelvek mellett ismerkedjenek meg a .NET új biztonsági megoldásaival is.
Borbély András security-szakértő / Grepton Informatikai Rt.