Biztonság java web alkalmazásokban



Hasonló dokumentumok
Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

Üdvözli Önöket A PGY3 tantárgy! Bakay Árpád dr. NETvisor kft (30) arpad.bakay@netvisor.hu

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Adatkezelés. 11. előadás (Entity Beans)

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Stateless Session Bean

A WEB programozása - JSP1 dr.gál Tibor őszi félév

Biztonságos PHP a gyakorlatban

Java technológiák - ANTAL Margit. komponensek. A HTTP protokoll. Webkonténerek és szervletek. Egyszerű HTTP. ANTAL Margit.

Magazine () Java Authentication and Authorization Service. Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 7.

Szervlet-JSP együttműködés

Bevezető. Servlet alapgondolatok

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

JEE tutorial. Zsíros Levente, 2012

Webes űrlapok és az XForms ajánlás

Internet technológiák

4. Gyakorlat: Csoportházirend beállítások

Konfigurációkezelés (2B)

Mérési útmutató a Secure Shell (SSH) controll és audit című méréshez

MailMasterPlus API. fejlesztői dokumentáció

MVC. Model View Controller

Struts2 keretrendszer

Adatbázisok webalkalmazásokban

Symfony kurzus 2014/2015 I. félév. Controller, Routing

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Symfony kurzus 2014/2015 I. félév. Security: authentication, authorization, user provider, role-ok, access control, FOS user bundle

Mobil Informatikai Rendszerek

Java Servlet technológia

Java és web programozás

Osztott alkalmazások fejlesztési technológiái Áttekintés

C# osztályok. Krizsán Zoltán

Java Challenge második forduló játékszabályai v1.2

Eddig még nem használt vezérlőket is megismerünk: PlaceHolder, RadioButtonList.

Objektumorientált programozás C# nyelven

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Magazine. Java Authentication and Authorization Services. Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 11

Alap számológép alkalmazás

JavaServer Pages (JSP) (folytatás)

SQL Server High Availability. Bevezetés az SQL Server magas rendelkezésre állási megoldásaiba

A magyar URN:NBN rendszer alapelvei

11. Gyakorlat: Certificate Authority (CA), FTP site-ok

Enterprise JavaBeans 1.4 platform (EJB 2.0)

JAVA webes alkalmazások

OEP Betegéletút lekérdezés háziorvosok és vénytörténet lekérdezés patikák számára. API dokumentáció. verzió: 2.01

Objektumorientált programozás C# nyelven III.

INFORMATIKAI ALAPISMERETEK

Hálózati adminisztráció Linux (Ubuntu 8.04) 12. gyakorlat

Adatbázis használata PHP-ből

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

.NET Microsoft.Net Framework

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7

Gyakorla( útmutató és demonstrációk a SZTAKI Felhő használatához

LINUX LDAP címtár. Mi a címtár?

Farkas Szilveszter Magyarországi Web Konferencia Budapest, október 3.

XmlGessünk 13. rész - Az XML Schema II.

A Web réteg architektúrája A JSF web alkalmazás keretrendszer. Bakay Árpád dr. NETvisor kft (30)

A Java EE 5 plattform

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Web-fejlesztés NGM_IN002_1

IBM Tivoli Access Manager for WebLogic Server Felhasználóikézikönyv. 3.9-es verzió GC

Web-fejlesztés NGM_IN002_1

API tervezése mobil környezetbe. gyakorlat

KÜRT Zrt. Logelemzés heti riport Felhasználói fiók, illetve felhasználói csoportkezelési műveletek

Web-fejlesztés NGM_IN002_1

Adatbázis-kezelés ODBC driverrel

Számítógép labor V. Egyszer Web szerver. Dokumentáció. Készítette: Ács Gergely (K4C03M)

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

INFORMATIKAI ALAPISMERETEK

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

.NET alapszolgáltatások 2.

ANDROID ALKALMAZÁSFEJLESZTÉS

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Interaktív weboldalak készítése

Java és web programozás

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

WWW Kliens-szerver Alapfogalmak Technológiák Terv. Web programozás 1 / 31

RIA Rich Internet Application

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

INFORMATIKAI ALAPISMERETEK

Hello, EJB! Egy egyszerű példa

Web-fejlesztés NGM_IN002_1

Programozás II. labor

Rétegezett architektúra HTTP. A hálózatfejlesztés motorját a hálózati alkalmazások képezik. TCP/IP protokoll készlet

SZAKDOLGOZAT. Vígh Gábor DEBRECEN 2009.

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Webes alkalmazások fejlesztése 7. előadás. Autentikáció és autorizáció (ASP.NET)

10. Gyakorlat: Alkalmazások publikálása Remote Desktop Szervízen keresztül

VoIP biztonság. BME - TMIT Médiabiztonság feher.gabor@tmit.bme.hu

Kompozit alkalmazások fejlesztése. IBM WebSphere Portal Server

ERserver. iseries. Szolgáltatási minőség

Adatbányászat és Perszonalizáció architektúra

Bánsághi Anna

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Teszt topológia E1/1 E1/0 SW1 E1/0 E1/0 SW3 SW2. Kuris Ferenc - [HUN] Cisco Blog -

Szolnoki Főiskola Szolnok

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Segédanyag: Java alkalmazások gyakorlat

Java Business Integration szolgáltatásalapú architektúra JavaEE környezetben. Simon Géza Zsemlye Tamás

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Átírás:

Biztonság java web alkalmazásokban Webalkalmazások fejlesztése tananyag Krizsán Zoltán 1 [2012. május 9.] 1 Általános Informatikai Tanszék Miskolci Egyetem 2012. május 9. Krizsán Zoltán [2012. május 9.] () 2012. május 9. 1 / 34

Általános információk Tartalom 1 Biztonság Java web alkalmazásban Általános információk Telepít leíró alapú beállítás Annotációkkal Kód alapú biztonsági ellen rzés EJB Krizsán Zoltán [2012. május 9.] () 2012. május 9. 2 / 34

Általános információk Bevezetés I Authentikáció: Ki kéri az er forrást? Authorizáció: hozzáférés szabályozás: Már tudjuk ki kéri, szabad neki? Adat integritás: Nem változott e meg az er forrás (átvitel során)? Krizsán Zoltán [2012. május 9.] () 2012. május 9. 3 / 34

Általános információk Authentikáció I 1 Névvel ellátott szerepek (role) vannak, amikben felhasználók. 2 * szerep = minden deniált szerepre illeszkedik. 3 A felhasználóknak legalább egy szerepben kell lenniük! 4 Jogokat a szerepekhez adjuk. Ha nem talál illeszked szabályt a kérésre, akkor engedélyezett! Krizsán Zoltán [2012. május 9.] () 2012. május 9. 4 / 34

Általános információk Kérés kiszolgálásának menete I 1 A szervlet konténer egy kérést kap. 2 Az URL minta alapján megkeresi az illeszked szabályokat. Ha nincs engedélyezi a kérést. Ha van szabály, akkor tovább vizsgál. Krizsán Zoltán [2012. május 9.] () 2012. május 9. 5 / 34

Általános információk Biztonsági ellenörzések koncepció I Fejleszt : logikai neveket használ Rendszergazda: Tényleges (zikai) felhasználó neveket, csoportokat használ. Rendszergazda/webapp üzemeltet : összerendeli a logikai és zikai fogalmakat. Krizsán Zoltán [2012. május 9.] () 2012. május 9. 6 / 34

Tartalom 1 Biztonság Java web alkalmazásban Általános információk Telepít leíró alapú beállítás Annotációkkal Kód alapú biztonsági ellen rzés EJB Krizsán Zoltán [2012. május 9.] () 2012. május 9. 7 / 34

Biztonsági beállítások I A szervlet konténer feladata a megfelel m velet elvégzése. Beállítása lehetséges: Deklaratív Annotációkkal Telepít leíróban(web.xml) (deklaratív) Imperatív Kód alapú Krizsán Zoltán [2012. május 9.] () 2012. május 9. 8 / 34

Authentikációs mechanizmusok I HTTP Basic Authentication HTTP Digest Authentication HTTPS Client Authentication Form Based Authentication Krizsán Zoltán [2012. május 9.] () 2012. május 9. 9 / 34

Authentikáció kiválasztása I login-cong elem a leíróban auth-method 1 NONE 2 BASIC 3 DIGEST 4 FORM 5 CLIENT-CERT realm-name: BASIC esetén ezt küldi a szerver. form-login-cong: FORM esetén a hiba és login form oldal oldalak (relatív útvonal). Krizsán Zoltán [2012. május 9.] () 2012. május 9. 10 / 34

HTTP Basic Authentication I usernév/jelszó alapú Web böngész ben beépített form jelenik meg HTTP/1.0 Nem biztonságos base64 kódolt jelszó A szerver nem hitelesített. de kiterjeszthet (https, vpn) A server egy realm (string) szöveget küld a kliensnek, hogy hova kell bejelentkeznie. BASIC</auth-method> Krizsán Zoltán [2012. május 9.] () 2012. május 9. 11 / 34

HTTP Digest Authentication I usernév/jelszó alapú Web böngész ben beépített form jelenik meg Biztonságosabb a jelszó hash-ét küldi a kliens a szervernek A szerver nem hitelesített. kiterjeszthet (https, vpn) A server egy realm (string) szöveget küld a kliensnek, hogy hova kell bejelentkeznie. DIGEST</auth-method> Krizsán Zoltán [2012. május 9.] () 2012. május 9. 12 / 34

Form Based Authentication I usernév/jelszó alapú A bejelentkez formot a web fejleszt készíti (készítheti). tartalmazni kell vezérl ket j_username és j_password nevekkel. action="j_security_check" kell legyen Telepít leíró-ban bejelentkez form, hiba oldal. Védett er forrás igénylésekor a konténer átirányít ha az ügyfél nem authentikált. Nem biztonságos base64 kódolt jelszó A szerver nem hitelesített. de kiterjeszthet (https, vpn) < form method =" POST " action =" j_security_check " > < input type =" text " name =" j_username " > < input type =" password " name =" j_password " > </ form > Krizsán Zoltán [2012. május 9.] () 2012. május 9. 13 / 34

Form alapú authentikáció beállítása I <login - config > <auth - method > FORM </ auth - method > <realm - name > file </ realm - name > <form - login - config > <form - login - page >/ login. xhtml </ form - login - page > <form - error - page >/ error. xhtml </ form - error - page > </ form - login - config > </ login - config > Krizsán Zoltán [2012. május 9.] () 2012. május 9. 14 / 34

Form alapú authentikáció forgatókönyve I Krizsán Zoltán [2012. május 9.] () 2012. május 9. 15 / 34

Form alapú authentikáció forgatókönyve II Ha a kliens nincs azonosítva, akkor 1 Egy kérés érkezik egy védett er forrásra. 2 Az er forráshoz rendelt form-ot elküldik a kliensnek, elmenti az url-t és a paramétereket. 3 A felhasználó kitölti a usernevet és jelszót. 4 A kliens visszaküldi a paramétereket a szervernek. 5 A konténer a kapott paraméterek alapján megpróbálja a klienst azonosítani. Ha sikertelen, akkor a hiba oldalra továbbít és a http válsz kód 200-as lesz. Ha sikeres (van ilyen felhasználó), akkor megvizsgálja a szerepeket hogy vajon van e joga hozzáférni. Ha minden ok, akkor az els lépésben eltárolt információk alapján átirányítja a kérést a megfelel er forrásra. Krizsán Zoltán [2012. május 9.] () 2012. május 9. 16 / 34

User/jelszó tárolása I Krizsán Zoltán [2012. május 9.] () 2012. május 9. 17 / 34

User/jelszó tárolása II A specikáció nem rögzíti a módját. A konténert implementáló alkalmazástól függ (motor). Lehet adatbázisban, saját cong le-ban,... (pl.: tomcat: <user password="tomcat" roles="tomcat,manager,admin" username="tomcat"/>) Krizsán Zoltán [2012. május 9.] () 2012. május 9. 18 / 34

falhsználó, csoport szerepre képzése I < glassfish -web - app > < security - role - mapping > <role - name > Mascot </ role - name > < principal - name > Duke </ principal - name > </ security - role - mapping > < security - role - mapping > <role - name > Admin </ role - name > <group - name > Director </ group - name > </ security - role - mapping > </ glassfish -web - app > Krizsán Zoltán [2012. május 9.] () 2012. május 9. 19 / 34

TransportGuarantee I Transport rétegnek instrukció CONFIDENTIAL: bizalmas információ, titkosítani kell INTEGRAL: nem kényes, érintetlenül kell küldeni NONE: Nem kell foglalkozni vele. 1 <user - data - constraint > 2 < transport - guarantee > CONFIDENTIAL </ transport - 3 </ user - data - constraint > Krizsán Zoltán [2012. május 9.] () 2012. május 9. 20 / 34

Kényszerek megadása (Security constraints) I security-constraint elemei web-resource-collection auth-constraint user-data-constraint Ellen rizhetjük a HTTP metódust (http-method, http-method-omission), URL mintákat (url-pattern) Krizsán Zoltán [2012. május 9.] () 2012. május 9. 21 / 34

Példa I < security - constraint > <web - resource - collection > <web - resource - name > retail </web - resource - name > <url - pattern >/ acme / retail /* </url - pattern > <http - method >GET </ http - method > <http - method > POST </ http - method > </web - resource - collection > <auth - constraint > <role - name > CONTRACTOR </ role - name > <role - name > HOMEOWNER </ role - name > </ auth - constraint > </ security - constraint > Krizsán Zoltán [2012. május 9.] () 2012. május 9. 22 / 34

Felhasználói csoport leképzése szerepre I < > < - name > BasicServlet </ - name > < - class > serlets. BServlet </ - class > < security - role - ref > <role - name > Manager </ role - name > <role - link > supervisor </ role - link > </ security - role - ref > </ > Használat szervletb l: res. getwriter (). println (" Manger isuserinrole? " + req. isuserinrole (" Manager ")); Krizsán Zoltán [2012. május 9.] () 2012. május 9. 23 / 34

Annotációk I Az osztályra, mely implementálja az -et. @ServletSecurity @HttpConstraint @HttpMethodConstraint @DeclareRoles @RunAs Krizsán Zoltán [2012. május 9.] () 2012. május 9. 24 / 34

Példa az annotációk használatára I @ ServletSecurity ( @ HttpConstraint ( EmptyRoleSemantic. DENY )) public class Example3 extends HttpServlet { } @ ServletSecurity ( @ HttpConstraint ( rolesallowed = " R1 ")) public class Example4 extends HttpServlet { } @ ServletSecurity (( htt pme thod Cons trai nts = { @HttpMethodConstraint ( value = " GET ", rolesallowed = " R1 "), transportguarantee = TransportGuarantee. CONFIDENTIAL ) }) public class Example5 extends HttpServlet { } Krizsán Zoltán [2012. május 9.] () 2012. május 9. 25 / 34

Példa II I @WebServlet ( name = " PayrollServlet ", urlpatterns = {"/ payroll " }) @ServletSecurity ( @HttpConstraint ( transportguarantee = TransportGuarantee. CONFIDENTIAL, rolesallowed = {" DEPT - ADMIN ", " DIRECTOR " }) ) public class GreetingServlet extends HttpServlet Krizsán Zoltán [2012. május 9.] () 2012. május 9. 26 / 34

Kód alapú biztonság I Deklaratív biztonság kiterjesztése HttpServletRequest interface: authenticate: a konténerben beállított mechanizmus fut le (pl. form jelenik meg). login: kapott paraméterek alapján (nincs form) logout getremoteuser: null, ha nincs user isuserinrole getuserprincipal: null, ha nincs user Krizsán Zoltán [2012. május 9.] () 2012. május 9. 27 / 34

EJB Tartalom 1 Biztonság Java web alkalmazásban Általános információk Telepít leíró alapú beállítás Annotációkkal Kód alapú biztonsági ellen rzés EJB Krizsán Zoltán [2012. május 9.] () 2012. május 9. 28 / 34

EJB Biztonsági beállítások lehet ségei I Minden esetben a metódus hívásakor a hívó kilétét ellen rzi. A hívó lehet Egy sima alkalmazás (console, swing). Egy webapp (, jsp). Másik EJB. Deklaratív telepít leíróból annotációból Kód alapú Krizsán Zoltán [2012. május 9.] () 2012. május 9. 29 / 34

EJB Biztonság beállítása telepítés leiróból Krizsán Zoltán [2012. május 9.] () 2012. május 9. 30 / 34

EJB Beállítás annotációkkal I @DeclareRoles: deniálja a használni kívánt szerepeket. A bean osztályra kell megadni. Ezek után használható a iscallerinrole(string rolename). Több esetén: @DeclareRoles("Administrator", "Manager", "Employee") @RolesAllowed: el írja a hívó kilétét Metódusra hozzáférését szabályozza. Meg lehet adni egy osztályra (ilyenkor az összes metódusára érvényes). Meg lehet adni egy vagy több metódusra. Ha az osztályra megadtuk és egy metódusra ismét megadjuk, akkor felülírja a helyi a az osztályét. a @DeclareRoles egy részhalmaza lehet csak. @PermitAll : metódusra, vagy osztályra @DenyAll : metódusra, vagy osztályra @RunAs : más jog alatt futtatja pl.: @RunAs("Admin") Krizsán Zoltán [2012. május 9.] () 2012. május 9. 31 / 34

EJB Beállítás annotációkkal példa I @DeclareRoles ({ " DEPT - ADMIN ", " DIRECTOR " }) @Stateless public class PayrollBean implements Payroll { @RolesAllowed (" DEPT - ADMIN ") public void reviewemployeeinfo ( EmplInfo info ) { // oldinfo =... read from database ; } @RolesAllowed (" DIRECTOR ") public void updateemployeeinfo ( EmplInfo info ) { // newinfo =... update database ; } } Krizsán Zoltán [2012. május 9.] () 2012. május 9. 32 / 34

EJB Kód alapú I EJBContext, HttpServletRequest interface megfelel metódusával iscallerinrole (EJBContext) getcallerprincipal (EJBContext) isuserinrole (HttpServletRequest) getuserprincipal (HttpServletRequest) Krizsán Zoltán [2012. május 9.] () 2012. május 9. 33 / 34

EJB Példa: iscallerinrole használata I @DeclareRoles (" payroll ") @Stateless public class PayrollBean implements Payroll { @Resource SessionContext ctx ; public void updateemployeeinfo ( EmplInfo info ) { oldinfo =... read from database ; // @DeclareRoles or security - role - ref in xml // who have the security role " payroll " if ( info. salary!= oldinfo. salary &&! ctx. iscallerinrole (" payroll ")) { throw new SecurityException (...) ; } } } Krizsán Zoltán [2012. május 9.] () 2012. május 9. 34 / 34