Í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.