Az eddig ismertetett eljárások hasznosak és fontosak az alkalmazásaink védelmében, de alapvetően nem attól lesz biztonságos valami, hogy egy adott technológiát, algoritmus alkalmaz, hanem attól, hogy már a tervezésekor gondolva lett a biztonságra. Már a tervezési fázisban gondolj a biztonságra. Határozd meg azokat a biztonsági követelményeket, amelyeknek az alkalmazásnak meg kell felelnie, és úgy tervezd meg az alkalmazásodat, hogy az ezeknek megfeleljen.
Ha a tervezési fázisban kimarad a biztonság, akkor késÅ‘bb, ha pótolható is, akkor sem biztos, hogy egyszerű feladat lesz. Éppen ezért következzen pár tipp, hogy hogyan készÃts biztonságos alkalmazásokat:
- Használj biztonságos programozási gyakorlatokat, mint például az input validáció, az adatvédelem, a hibakezelés, a jogosultságkezelés és a titkosÃtás.
- A külsÅ‘ források, mint például harmadik féltÅ‘l származó könyvtárak és API-k, jelentÅ‘s biztonsági kockázatot jelenthetnek. Használj csak megbÃzható forrásokat, és rendszeresen ellenÅ‘rizd azokat a biztonsági résekre és sebezhetÅ‘ségekre.
- Rendszeresen frissÃtsd az alkalmazásodat az új biztonsági javÃtásokkal, és ellenÅ‘rizd a szolgáltatások és a külsÅ‘ források biztonságos használatát.
- Végezz átfogó teszteket az alkalmazásod biztonsági sebezhetÅ‘ségeinek azonosÃtására. Ezen tesztek közé tartozik a folyamatellenÅ‘rzés, a penetrációs tesztelés, a stressztesztelés és a sebezhetÅ‘ségi tesztelés.
- Tájékoztasd a felhasználókat a biztonságos használati gyakorlatokról, mint például az erős jelszó használata, a biztonságos hálózatok használata, az adatvédelem és a személyes adatok védelme.
- Rendszeresen ellenőrizd az alkalmazást, hogy az megfelel-e a biztonsági követelményeknek, és hogy nincsenek-e sebezhetőségek vagy biztonsági rések.
- Tartsd nyilván a naplófájlokat, hogy azonosÃthasd az esetleges biztonsági incidenseket, és tudj reagálni a problémákra.
- Legyen egy tervezett választerv a biztonsági incidensekre, beleértve a válságkezelési stratégiákat és a visszaállÃtási terveket. Az ilyen tervek segÃthetnek minimalizálni a károkat, amelyeket a biztonsági incidensek okozhatnak.
- A biztonsági gyakorlatok és iparági szabványok folyamatosan változnak és frissülnek, ezért fontos, hogy naprakész legyél az aktuális trendekkel és legjobb gyakorlatokkal. Tartsd szemmel az OWASP (NyÃlt Webes Alkalmazásbiztonsági Projekt) biztonsági irányelveit és javaslatait, és alkalmazd azokat az alkalmazásod fejlesztése során.
- Az alkalmazás biztonsága soha nem lehet mellékes szempont. Mindig tartsd szem előtt a biztonságot, és ne engedd, hogy az alkalmazás funkcionalitása és felhasználói élménye a biztonság rovására menjen.
- Az alkalmazásbiztonság területe folyamatosan fejlődik, ezért fontos, hogy képezd magad és a kollégáidat is a legújabb trendekkel és legjobb gyakorlatokkal kapcsolatban.
Biztonságos programozási gyakorlatok
A biztonságos programozási gyakorlatok közül talán a legfontosabb a bemenetek megfelelÅ‘ hibavédelme. Tételezzük fel, hogy van egy szövegmezÅ‘nk, ami számokat vár bemenetként. Elkerülhetetlen, hogy egyszer legyen egy felhasználó, aki szöveget akar majd ide beÃrni. Kérdés, hogy mit és hogy reagál az alkalmazás? Erre a válasz igencsak kontextus és alkalmazás függÅ‘, de a lényeg az lenne, hogy a felhasználó által beÃrt adatokat ellenÅ‘rzés nélkül sose használjuk fel.
A jogosultságkezelés kapcsán sokszor felmerül az autentikáció (authentication) és az autorizáció (authorization). Ezeket általában gyakran összekeverik.
Az autentikáció azt jelenti, hogy a felhasználó azonosÃtja magát, és bizonyÃtja, hogy Å‘ az, akinek mondja magát. A felhasználó általában egy felhasználónév-jelszó párossal vagy valamilyen más hitelesÃtési módszerrel azonosÃtja magát.
Az autorizáció azonban azt jelenti, hogy a rendszer ellenÅ‘rzi, hogy a felhasználó jogosult-e hozzáférni az adott erÅ‘forráshoz vagy szolgáltatáshoz. Az autorizáció elÅ‘tt általában az autentikáció folyamatán kell átmennie a felhasználónak, hogy a rendszer tudja, kinek kell azonosÃtania és ellenÅ‘riznie az engedélyeket.
Az autentikáció és autorizáció implementálása nélkülözhetetlen, hogy az alkalmazásunkban meg tudjuk valósÃtani a need to know elvet.
A Need-to-Know (szükség van tudni) elv a biztonsági szabályozások egyik alapelve, amely szerint az érzékeny információkat csak azoknak az embereknek kell elérniük, akiknek erre a munkájuk során valóban szükségük van. Az elv azt mondja, hogy a hozzáférés az információkhoz az adott feladathoz vagy munkakörhöz kapcsolódóan csak akkor engedélyezhető, ha az információhoz való hozzáférés szükséges az adott feladat végrehajtásához.
Ez az elv biztosÃtja, hogy csak azok az emberek férnek hozzá az információhoz, akiknek szükségük van rá, és minimalizálja az illetéktelen hozzáférés lehetÅ‘ségét. Erre az elvre szoktak még least privilage (legkevesebb jogosultág) elvként is hivatkozni.
CIA
Minden IT rendszer dolgozik adatokkal és biztonsági szempontból nézve nem minden adat egyenlően fontos. Kérdés az, hogy hogyan tudjuk biztonság szempontjából osztályozni, besorolni az adatokat, amelyekkel a rendszerünk dolgozik? A válasz a kérdésre a Confidentiality-Integrity-Availability (CIA) triad.
Ez egy biztonsági modell, aminek a segÃtségével osztályozni és megvédeni lehet a információkat a három területre vonatkozó fenyegetésektÅ‘l.
A CIA triad segÃtségével az információ bizalmasságának (confidentiality), integritásának (integrity) és elérhetÅ‘ségének (availability) kockázatait kezelni és értékelni lehet.
A CIA elemei:
- Confidentiality (bizalmas): Az információ bizalmas maradása azt jelenti, hogy csak azok a személyek vagy szervezetek férhetnek hozzá, akiknek jogosultságuk van az információhoz. Ez a jogosultság biztosÃtja, hogy az információ ne kerüljön rossz kezekbe.
- Integrity (sértetlen): Az információ sértetlen maradása azt jelenti, hogy az információ épségét és pontosságát megÅ‘rizzük, és hogy senki sem módosÃthatja azt a megbÃzhatóságának kárára. Az információ integritása nagyon fontos, mivel a hibás vagy manipulált információk megalapozhatják a hibás döntéseket.
- Availability (hozzáférhetÅ‘): Az információ hozzáférhetÅ‘sége azt jelenti, hogy az információ mindig elérhetÅ‘, amikor szükség van rá. Az információ elérhetÅ‘sége kritikus fontosságú tud lenni, mivel az információ hiánya vagy késedelme negatÃv hatással lehet az üzletmenetre vagy az ügyfelek elégedettségére.
Példaként vizsgáljuk meg egy bankszámlához tartozó információkat a CIA mátrix segÃtségével:
A bankszámla egy bizalmas adat, amelyhez csak az ügyfél és a bank szakemberei férhetnek hozzá.
Az adatok integritása fontos a bankszámla esetében, mivel a banknak biztosÃtania kell, hogy az ügyfél adatai épségben maradnak, és senki sem módosÃthatja azokat.
Az információ elérhetősége is nagyon fontos, mivel az ügyfélnek bármikor hozzáférhetőnek kell lennie a bankszámla adataihoz. Ha az ügyfél nem férhet hozzá az adataihoz, akkor ez káros hatással lehet az üzletmenetre és az ügyfelek elégedettségére.
TRA
A megfelelÅ‘ védelmi döntések meghozatala nem minden esetben triviális. Ebben segÃt a TRA. A Threat and Risk Analysis (TRA) egy olyan folyamat, amelynek során az információs rendszerek és azok adatai védelmének szükségessége és hatékonysága érdekében azonosÃtják a fenyegetéseket és kockázatokat.
A TRA folyamat általában az alábbi lépéseket tartalmazza:
-
Kockázatok azonosÃtása: Az elsÅ‘ lépés a kockázatok azonosÃtása, vagyis azon körülmények és tényezÅ‘k meghatározása, amelyek veszélyeztetik az információbiztonságot. Ez magában foglalhatja a technikai, az emberi és a környezeti kockázatokat is.
-
Kockázatok értékelése: Az értékelés során felmérik a kockázatok súlyosságát, az esélyét, hogy bekövetkezzenek, valamint a következményeiket. Ezen adatok alapján rangsorolják a kockázatokat, hogy meghatározzák, melyek a legfontosabbak.
-
Védelmi intézkedések tervezése: A védelmi intézkedések tervezésekor a kockázatokat csökkentő intézkedéseket határoznak meg. Ezek lehetnek technikai, szervezeti vagy jogi jellegűek, és általában olyan megoldásokat jelentenek, amelyek minimalizálják a kockázatokat.
-
Védelmi intézkedések értékelése: A védelmi intézkedések hatékonyságát és hatásosságát értékelik annak érdekében, hogy biztosÃtsák, hogy azok megfelelÅ‘en működnek és továbbra is védelmet nyújtanak az információk számára.
Nézzünk egy példát. Tételezzük fel, hogy egy vállalat úgy döntött, hogy bevezeti a home office munkavégzést a dolgozóinak egy részének, hogy csökkentse az irodai költségeket és javÃtsa a munka és magánélet egyensúlyát. Azonban a vállalat vezetése aggódik az információbiztonsági kockázatok miatt, amelyekkel a home office dolgozók szembe kell nézniük.
Az elsÅ‘ lépésben a vállalat vezetése azonosÃtja a lehetséges kockázatokat, amelyekkel a home office dolgozók szembesülhetnek. Ezek közé tartoznak a külsÅ‘ számÃtógépes támadások, a belsÅ‘ adathalászat, a nem megfelelÅ‘ fizikai biztonság és az adatvesztés.
A következÅ‘ lépésben a vezetés értékeli a kockázatok súlyosságát és a valószÃnűségét. Például a külsÅ‘ számÃtógépes támadások nagyon súlyosak lehetnek, mivel az adatok ellopása vagy sérülése súlyos következményekkel járhat. A belsÅ‘ adathalászat is nagy valószÃnűséggel elÅ‘fordulhat, mivel a dolgozók otthonról dolgoznak, és könnyebb célpontot jelenthetnek a támadóknak.
Ezt követÅ‘en a vezetés olyan védelmi intézkedéseket tervez, amelyek csökkentik a kockázatokat. Ez magában foglalhatja a szigorú jelszópolitikák bevezetését, az adatvédelmi szoftverek telepÃtését, az adatok biztonságos tárolását és a dolgozók képzését a biztonságos online viselkedésrÅ‘l.
Végezetül pedig a vállalat vezetése rendszeresen ellenőrzi a védelmi intézkedések hatékonyságát és ha szükséges további intézkedéseket vezet be.
OWASP
Az OWASP (Open Web Application Security Project) egy nonprofit szervezet, amelynek célja az internetes alkalmazások biztonságának javÃtása. Az OWASP szervezet egy globális közösséget tömörÃt, amely az internetes alkalmazások biztonsági problémáival foglalkozik.
Az OWASP szervezet többféle módon támogatja az internetes alkalmazások biztonságának javÃtását. Az OWASP által készÃtett szabványok és irányelvek (pl. OWASP Top 10 – https://owasp.org/www-project-top-ten/) segÃtenek az alkalmazások biztonsági hibáinak azonosÃtásában és kezelésében. Az OWASP szervezet által szervezett képzések és konferenciák pedig lehetÅ‘séget biztosÃtanak a szakembereknek az információk megosztására és a fejlesztésre.
Az OWASP közössége számos szoftverprojektet támogat, amelyek segÃtik a fejlesztÅ‘ket az alkalmazások biztonságának javÃtásában. Ezek közé tartoznak olyan eszközök, mint például a WebGoat (https://owasp.org/www-project-webgoat/) és a Zed Attack Proxy (https://www.zaproxy.org/).
Az OWASP szervezetnek nagy szerepe van az internetes alkalmazások biztonságának javÃtásában, és célja, hogy a szervezet tagjai által kidolgozott szabványok és irányelvek az iparágban elfogadott gyakorlatokká váljanak.
A tömérdek mennyiségű információ és tudás között, amit az OWASP biztosÃt nem mindig egyszerű, fÅ‘leg, ha új számunkra a téma. Éppen ezért szinte minden programozási nyelvhez készÃtettek egy gyorstalpalót vagy puskát (cheat sheat), ami segÃt elindulni a megfelelÅ‘ irányba. .NET alkalmazásokhoz ez a https://cheatsheetseries.owasp.org/cheatsheets/DotNet_Security_Cheat_Sheet.html cÃmen érhetÅ‘ el.