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.