Egyre többször hallani, hogy bizonyos cégek hackelés áldozatai lettek és így újabb helyről szivárogtak ki adatok. Nézzük meg, mit tehetünk ennek elkerülése érdekében már projekttervezés és programozás szinten. Hogyan lehet minél biztonságosabb a kódolás?
Készítsünk kockázati modellt a készülő szoftverről
Ez lényegében azt takarja, hogy leülünk és átvizsgáljuk a szoftver terveit sérülékenységeket keresve. Ennek egy módszere, hogy végig követjük az adat áramlását a szoftverben és minden ponton megvizsgáljuk milyen veszélyek leselkednek rá, milyen ismert rések kihasználásával lehetne hozzáférni, mivel próbálkozhatnak a bűnözők. Majd az így összegyűjtött kockázatokat rangsoroljuk és terveket készítünk a kiküszöbölésükre. Az így elkészült modellt pedig frissen tartjuk, minden változás esetén újra vizsgáljuk.
Ennek a lépésnek a lényege, hogy a biztonságot már beletervezzük a rendszerbe és nem csak a projekt végén adjuk hozzá (ha jut rá idő…).
Automatizálás és kódolás
Azzal, hogy automatizálunk amit csak lehet, egy nagyon fontos hibaforrástól szabadulhatunk meg. Ez pedig az emberi hiba. Legyen egy szakember bármennyire is ügyes, csak idő kérdése, hogy becsússzon a kódolás során egy apróbb hiba, egy melléütés, egy kihagyott lépés, stb. Ez ugyebár egy automatizált folyamat esetén nem történhet meg. Az minden alkalommal pontosan úgy fog mindent végrehajtani, ahogy az meg lett írva. Az automatizálási folyamat részeként a kódunknak is teszteltnek kell lennie, és emellett maga a folyamat is le lesz tesztelve, hogy csak biztosan működő rendszert adjunk ki a kezünk közül.
Kódolás egyszerűen
Próbáljuk a rendszerünket minél egyszerűbbre kialakítani. Lehet készíteni lenyűgöző rendszereket készíteni aminek csodájára járnak a világ minden részéről, de azok az esetek túlnyomó részében annak egy átláthatatlan, kezelhetetlen bestia lesz a vége. Sokkal előrébb vagyunk egy egyszerű, átlátható rendszerrel, hiszen abban könnyebben észrevehetjük, ha valami probléma vagy hiba van. Nem utolsó sorban lényegesen egyszerűbb szükség esetén változtatni rajta.
Titkosítás
A titkosítás több szempontból is hasznos. Egyrészt, ha valaki esetleg lehallgatja az általunk használt internetes – vagy egyéb mások által is elérhető – kommunikációs csatornáinkat, akkor sem tudja kinyerni az adatainkat. Másrészt pedig, ha megtörtént a baj és kiszivárogtak adatok tőlünk, akkor még mindig jobb helyzetben vagyunk, ha a megszerzett adatokhoz nem lehet hozzáférni a titkosítás miatt. Persze ennek is csak akkor van értelme, ha jól csináljuk.
Pár fontos részlet, amire figyelni kell:
- Ne találjunk ki saját titkosítási algoritmusokat! Kivéve persze, ha valaki kimondottan ezzel foglalkozik. De ha nem így van, akkor használjuk a közismert és ami fontosabb, bizonyítottan biztonságos algoritmusokat. Figyeljünk arra is, hogy ezeket is felül kell vizsgálni időnként, hogy biztonságosak-e még.
- A titkosításhoz használt kulcsokat is biztonságosan tároljuk! Például direkt az erre a célra tervezett kulcstároló programokban. Ezeket a kulcsokat ne tároljuk együtt a titkosított adattal és semmiképp se „égessük” bele őket a kódba.
- Nézessük át egy szakemberrel! Ő észrevehet olyan dolgokat amiket mi kihagytunk vagy rosszul csináltunk, elvégre az a munkája, hogy ő jobban értsen ehhez mint mi. A „legrosszabb” esetben is maximum az derül ki, hogy elég alaposak voltunk.
Sose bízzunk a felhasználóban
Oké, ez elsőre egy kicsit erősnek tűnhet. De vegyük számba, hogy a felhasználónk nem biztos, hogy mindig az, akire mi számítunk. Ha túl sok jogosultságot adunk a felhasználóknak, akkor egy illetéktelen kezében azok a jogosultságok óriási károkat okozhatnak. Avagy a valós felhasználó esetén is fennáll ez a veszély, ha véletlenül valami károsat csinál. Azzal most ne is foglalkozzunk, hogy ha szándékosan teszi ezt. Tehát igyekezzünk a lehető legkevesebb jogosultságot megadni a felhasználóink számára ezáltal csökkentve a felületet, amin keresztül a rendszerünk támadható.
Hogy egy példát is hozzak az ilyen veszélyekre: képzeljük el, hogy van egy SQL adatbázisunk, amiben a felhasználóink adatait tároljuk, illetve van egy online felületünk, ahol új felhasználókat regisztrálunk. Ezen a felületen bekérjük az új felhasználó nevét, és azt eltároljuk az adatbázisba. Ez ugye egy átlagos felhasználó esetén nem okoz problémát, maximum hibásan adja meg a nevét. Viszont az alábbi név megadása esetén komoly problémákba futhatunk: „Gipsz Jakab; DROP TABLE felhasználók;”. Ugyanis a név megadása után kiadtunk egy parancsot is, ami törli a felhasználókat az adatbázisból. Amennyiben a regisztrációs felületünkön nincs jól lekezelve a név megadása ez bizony egy eléggé valós probléma (még ha le is van egyszerűsítve).
Remélem, sokaknak nem kell manapság már ecsetelni, hogy mennyire fontos a rendszereink biztonsága. De ha már egy ember is elgondolkozott azon, hogy ezentúl komolyabban veszi a dolgot, akkor már megérte leírnom ezt a pár sort.
Comments are closed.