Írta: tom1964h
Biztonság és a Tomcat server
A hitelesítés és biztonság
Sokszor előfordul, hogy a kliensnek adott válasza a szervernek attól függ, hogy autentikálta-e magát.
A kérés feldolgozásakor ellenőrizzük a szerver oldalán, hogy a kérést küldő rendelkezik-e azokkal a jogokkal, hogy megkaphatja a kért információt. Ha …
- ha az autentikáció sikeres, akkor megkapja a kért adatokat, a kért weboldalt,
- ha az autentikáció sikertelen, akkor jelzi a szerver, hogy ehhez neki nincs joga: pl. 401-es hibát kap.
Különbség van az autentikáció és az autorizáció között. További információk ITT.
Az autentikáció azonosítást jelent (forrás Wikipedia).
Az autentikáció során a rendszer azonosít, pl. jellemzően mint felhasználót.
Tipikusan amikor megadod a jelszavad, és a felhasználóneved.
Ha jól adod meg az adataid, autentikálva vagy.
Az autorizáció pedig hitelesítést jelent (forrás Wikipedia).
Ha már korábban beléptél a rendszerbe (azaz autentikált felhasználó vagy),
a rendszer ellenőrzi hogy amit látni szeretnél ahhoz megfelelő jogosultságod van-e.
Alapból egy webalkalmazást könnyű beállítani arra, hogy csak azonosítás után lehessen használni. Ha sima HTTP protokollt használunk, a jelszavak Base64 kódolásban kerülnek elküldésre. Ez a mód azonban könnyen lehallgatható és a Base64-kódolású adatok könnyedén visszafejthetők. Ha maga a kommunikáció titkosított (pl. HTTPS protokoll használatával), a biztonsági szint megnő.
Basic Access Authentication
- HTTP-lekérdezésben, POST és GET esetén is használható
- a request headerben küldi a bejelentkezési adatokat, amelyeket encode-olunk basic authentication-nal, azaz Base64 eljárással: a login és a password kombinálásából hozzuk létre az elküldött kódot
- az így kapott kód Base[SPACE] stringgel kezdődik minden esetben
- a server ugyanilyen módszerrel dekódolja a kapott becsomagolt adatpárt és feldolgozza
- persze ez veszélyes, mert a BASE64 kódolás oda-vissza működik és a lehallgatott HEADER-ből kinyerhető a kód és abból a titkosított adat is - ez online is ellenőrizhető a base64encode oldalon
- a Basic authentication csak akkor használandó, ha a kapcsolatunk https tipusú kapcsolat a szerverrel: az adat, ami így utazik ssl/tts segítségével titkosítva van
Feladat:
- nyissuk meg a www.base64encode.org oldalt
- írjuk be a felső mezőbe:
admin:password
- nyomjuk meg az ENCODE gombot és alul megkapjuk a bekódolt adatpárt:
YWRtaW46cGFzc3dvcmQ=
- legfelül a selectort állítsuk át DECODE üzemmódba és másoljuk be a felső mezőbe:
YWRtaW46cGFzc3dvcmQ=
- a DECODE gombra klikkelve megkapjuk az
admin:password
adatpárt, teljesen nyilvánosan semmi által nem védve
A kódolt hitelesítési adatok minden esetben Basic … stringgel kezdődnek.
Curl és Postman
Többféle módon kontrollálhatjuk közvetlenül, mit kommunikálunk a szerverrel - a megfelelő biztonság eléréséhez ez alapvető
- pl. Linux alatt működik a curl parancs, ami böngésző-feldolgozas nélkül, nyersen, sorról-sorra mutatja meg a visszaérkező response-t
- Windows alatt használható erre a Postman
A kliens és a szerver közötti kommunikációt könnyen szimulálhatjuk és ellenőrizhetjük a Postman alkalmazás segítségével. A servlet a Postman-től kapott requestet feldolgozza és ellenőrzi a bejelentkezési kódokat, majd a megfelelő választ adja vissza - ezt is ellenőrizni tudjuk a Postman-ban.