!Revista Ase Lucrul Cu Bd in Java - Java - Securitate

download !Revista Ase Lucrul Cu Bd in Java - Java - Securitate

of 5

Transcript of !Revista Ase Lucrul Cu Bd in Java - Java - Securitate

  • 8/3/2019 !Revista Ase Lucrul Cu Bd in Java - Java - Securitate

    1/5

    RevistaInformatica Economica, nr. 2 (18)/200160

    Java, bazele de date si securitatea pe Internet

    Asist. Carmen STANCIUCatedra de Informatica Economica, A.S.E. Bucuresti

    Orice organizatie are una sau mai multe baze de date, deoarece acestea au o aplicabilitate

    foarte mare: financiar, administrativ, resurse umane etc. Prezenta lor n toate domeniile vietii

    economio-sociale a dus si la aparitia:

    unor motoare de baze de date, adica un soft optimizat care cteva comenzi asupra unui

    anumit tip de baze de date , precum si a

    unui standard privind limbajul de interogare al bazelor de date: SQL (Structured Query

    Language).

    Unul dintre standardele motoarelor de baze de date este si specificatia OBDC.

    Cuvinte cheie: Java, baze de date, standard, securitate, Internet.

    ava si bazele de date

    ODBC (Open DataBase Connectivity)este conceputa de Microsoft, fiind actual-mente acceptata ca un standard de facto nacest domeniu.Adminstratorul de baze de date pune lapunct modelul conceptual al unei baze dedate, ajuta la implemntarea acesteia,urmnd apoi sa gestioneze integritatea si

    accesul la datele acumulate. Trebuie sa tinacont de specificul interfetei Web si de pro-blemele de securitate, avnd n acest do-meniu o colaborare cu administratorulIntranet-ului.Programatorii trebuie sa se ocupe de parteade server SSS (Server Side Script), parteade client fiind de obicei foarte simpla.Pentru accesul la baze de date se poate fo-losi o gama variata de produse, de la pro-gramarea clasica (C++, C, Pascal), CGI,

    produse middleware (dbWeb, ColdFusion -returneaza documente n format HTML),scripturi.

    JDBC (Java Data Base Connectivity) re-prezinta o serie de API specifice Java pen-tru conectarea la baze de date, realizndastfel apropierea dintre Java si sferamutimedia din interiorul paginilor HTML.JDBC este un middleware destul de putinutilizat datorita faptului ca se bazeaza pe

    programarea clasica.n cadrul JDBC, un applet Java poate con-sulta cu usurinta nregistrarile unei baze de

    date. Are ca dezavantaj, n afara ca sebazeaza pe programare, si faptul ca nu suntintegrate n actualele browsere claseleJDBC. Utilizatorul trebuie deci sa ncarceacele clase JDBC nainte de a utilizaapllet-ul. Din aceasta cauza, aceasta solutiese adreseaza n principal Intranet-urilor,unde debitele sunt satisfacatoare.JDBC-ul are o constructie asemanatoare cu

    a ODBC-ului, fiind practic varianta ODBCpe obiecte, pentru Java, ambele pornind dela specificatiile X/Open SQL Call LevelInterface.Accesul la o anumita baza de date din Javavia JDBC se face pe baza unui driver spe-cific tipului bazei de date pe care dorim s-outilizam, fie via ODBC, folosind unbridge JDBC-ODBC. n acest caz, apelu-rile JDBC sunt transformate n apeluriODBC.

    Pe scurt, modul de lucru al JDBC-ului esteurmatorul:- stabileste o conexiune cu baza de date;- trimite secventele SQL;- prelucreaza rezultatele.JDBC-ul este o interfata low-level, fiindfolosita pentru executia directa a comen-zilor SQL si care are implementate douaAPI-uri mai importante:- un preprocesor SQL ncapsulat pentruJava, care permite folosirea secventelor

    mixte SQL direct din Java ;- o mapare directa a tabelelor bazei dedate relationale n Java, prin care fiecare

    J

  • 8/3/2019 !Revista Ase Lucrul Cu Bd in Java - Java - Securitate

    2/5

    RevistaInformatica Economica, nr. 2 (18)/2001 61

    articol al bazei de date devine o instanta aunei clase, si fiecare cmp corespunde unuiatribut al instantei respective.JDBC-ul se afla implementat n doua mo-

    dele:- modelul cu doua niveluri (two-tier) n care un applet sau o aplicatie Java lu-creaza direct cu baza de date;- modelul cu trei nivele (three-tier) ncare interogarile se trimit catre un nivelintermediar, numit server de aplicatie, careretrimite cererea SQL catre serverul bazeide date; n acest caz utilizatorul poate uti-liza un API de nivel mai nalt, care va fimai simplu de folosit si care transpune ce-

    rerile ntr-un limbaj de baza, nteles de ser-verul bazei de date.Comunicarea cu baza de date se poaterealiza:- direct, prin TCP/IP;

    - prin intermediul unui protocol nativ deretea, specific bazei de date.Driverele JDBC pot fi, n functie de fun-ctionalitati, de doua feluri:

    - pe partea de client ;- mixte, att pe partea de client ct si pecea de server.Firma Sun a stabilit o clasificare a tipuri-lor de drivere disponibile, si anume ceaprezentata n figura 1: driver-ele de tipul 1 reprezinta singurapunte JDBC-ODBC; driver-ele de tipul 2 nvelesc codul na-tiv, adica driverele existente, n Java; driver-ele de tipul 3 sunt scrise complet

    n Java si utilizeaza o componenta pe ser-ver si un protocol de retea pentru comuni-care ; driver-ele de tipul 4, scrise complet nJava, folosesc un protocol specific bazei dedate.

    APLICATIE SAU APPLET JAVA

    JDBC

    DRIVER TIP 1COD Java

    DRIVER TIP 2COD Java

    DRIVER TIP 3COD Java

    DRIVER TIP 3COD Java

    COD NATIV COD NATIV

    ODBC

    DRIVER ODBC

    RETEA

    BAZA DE DATE

    RETEA

    RETEARETEA

    COD SERVER

    Figura 1

    Java Soft furnizeaza JDBC-ul cu trei com-

    ponente, toate incluse n JDK, si anume:- JDBC driver manager- reprezinta co-loana vertebrala a arhitecturii JDBC; este

    mic, simplu si are functia de a conecta

    aplicatia Java cu driver-ul JDBC potrivit;

  • 8/3/2019 !Revista Ase Lucrul Cu Bd in Java - Java - Securitate

    3/5

    RevistaInformatica Economica, nr. 2 (18)/200162

    - JDBC driver test asigura ca driver-ulJDBC va functiona cu programul utilizato-rului;- JDBC- ODBC bridge permite driver-elor ODBC sa fie folosite ca drivere JDBC.JDBC este implementat pe doua nivele:- nivel driver care contine implementa-rile interfetelor specifice lucrului unuianumit tip de baza de date relationala;- nivel aplicatie constituit din DriverManager si clasele furnizate de driverulJDBC necesare conectarii la baza de date.

    Executia unei comenzi SQL din interiorulunui program Java folosind API-ul JDBC,

    presupune parcurgerea urmatoarelor etape:ncarcarea driver-ului JDBC, realizarea conexiunii la baza de date

    prin intermediul driver-ului:

    Connection

    c=DriverManagement.getConnection()

    constructia comenzii( Statement

    s=c.createStatemant),

    executia comenzii si returnarea rezulta-

    tului( ResultSet r=s.executeQuery).

    Pentru realizarea acestor functii se utili-zeaza urmatoarele interfete :- java.sql.DriverManager ncarca undriver JDBC si gestioneaza conexiunea labaza de date;- java.sql.Connection reprezintaconexiunea la o baza de date;- java.sql.Statement- gestioneaza o co-nexiune SQL;- java.sql.ResultSet asigura accesul larezultatele obtinute n urma executiei unei

    instrutiuni sql.

    Avantajele utilizarii JDBC fata de ODBC, n conditiile n care ODBC este cea maifolosita interfata pentru accesul la aproapeorice tip de baze de date relationale, ar fiurmatoarele:- ODBC nu este potrivit pentru a fi utili-zat direct din Java pentru ca foloseste in-terfata C, iar apelurile Java catre C potprovoca probleme, legate de portabilitate si

    securitate;

    - ODBC-ul este mai greu de nvatat,avnd optiuni complexe chiar si pentruinterogari simple;- JDBC-ul este o solutie pura Java, pu-tnd fi deci portabil si securizat pe toateplatformele, de la NC (Network Computer)la mainframe-uri.-5. Java si securitatea pe Internet

    Din punctul de vedere al securitatii, lim-bajul Java asigura un cadru de securitatecare nu poate fi subminat de coduri inco-recte sau de erori ale compilatorului. F

    Functionnd dupa reguli bine stabi-lite de o politica de securitate la nivel apli-

    catie, n Java exista totusi anumite clase deprobleme de securitate, dupa cum urmeaza:- atacuri de refuz al serviciului (denialof service attacs) implica asteptare ocu-pata, consumnd ciclii CPU, alocnd me-morie pna se blocheaza sistemul, blocndalte fire de executie si procese sistem, blo-cnd browserul pna la scoaterea sa din uz;nu exista n Java un mecanism care sa m-piedice aceste atacuri;- atacuri tripartite (three party attacs) de exemplu, un atacator C produce unapplet cal troian, un utilizator B puneacest applet, gasit pe Internet n pagina sade Web, iar un utilizator A vizualizeazapagina HTML a lui B, applet-ul lui C sta-bilind un canal ascuns pentru scurgereainformatiilor ntre de la A la C, fara stirealui B;- canale ascunse (convert channels) ;- informatie disponibila applet-urilor;-

    erori de implementare reprezinta bug-uri care apar n cadrul subsistemului Javasau a browser-ului; un exemplu este pro-priul server proxy care poate fi folosit deintrus pentru a vedea traficul bidirectionalrealizat de browserul HotJava, daca clien-tul foloseste protocoalele FTP si HTTPnecriptate .Masuri semnificative de protectie se potadauga printr-un manager de securitate,introdus prin biblioteca API, care furni-

    zeaza clasa java.lang.SecurityManager,ca posibilitate de a defini un set clar detask-uri care pot sau nu sa fie realizate.

  • 8/3/2019 !Revista Ase Lucrul Cu Bd in Java - Java - Securitate

    4/5

    RevistaInformatica Economica, nr. 2 (18)/2001 63

    Mediul Java contine o clasa globala, nu-mita SecurityManager, ale carei metodesunt utilizate pentru verificari n timpulexecutiei. Definind o subclasa a acestei

    clase se pot implementa diferite politici deprotectie.Clasa SecurityManager permite stabilireaunei politici de securitate specifice, princrearea unui obiect care determina daca ooperatie pe care programul intentioneazasa o execute este permisa sau nu. Clasacontine metode pentru atingerea urmatoa-relor punte din cadrul politicii de securi-tate:- determina daca este permisa conectareaprin retea, de la un host si pe un port speci-ficat;- determina daca un program poate fi

    ncarcat/ crea o noua clasa ntr-un pachetJava specificat;- mpiedica crearea unei noi claseClassLoader;- mdiedica un program sa paraseascaJVM fara monitorizare;- mpiedica crearea unui nouSecurityManager, care se poate suprapunepeste politica deja existenta;- verifica daca un fisier poate fi sters/ ci-tit/actualizat/ executat ;- verifica daca un tread poate fi utilizat deun alt thread sau de un grup de thread-uri;- verifica daca o biblioteca dinamica poatefi link-editata;- verifica daca un port de retea sigur poatefi ascultat pentru o conectare la sistemullocal;

    -verifica daca un program poate sa creezepropria sa implementare pe socket-uri;

    - identifica care proprietati pot fi accesateprin metoda System.getProperty();Alt aspect important relativ la securitateaJava este diferenta dintre applet-uri si apli-catii Java:- aplicatiile au dreptul de a accesa resur-sele sistemului, pot deschide si scrie n fi-siere, se pot conecta la diferite resurse deretea si pot rula diferite programe de pe

    sistemul local, deoarece sunt executate di-rect de interpretorul Java si trebuie insta-late si executate manual de catre utilizator;

    - applet-uri pot fi rulate dinamic denavigator (prin ncarcarea paginilor HTMLcare contin tag-ul APPLET) si pot provenisi din surse nesigure (de pe retea) avnd

    capacitatea de a produce pagube, motivpentru care sunt rulate ntr-un mediu deexecutie foarte controlat.

    Pentru a mai rezolva probleme de securi-tate existente n Java, odata cu lansareaversiunii JDK 1.1 au aparut facilitati pen-tru verificarea codului de pe alte surse,pentru a vedea daca a fost sau nu alterat deun intrus, introduse prin Java SecurityAPI.

    Bazata pe algoritmi si concepte criptogra-fice, biblioteca API Java Security este con-struita n jurul pachetului

    java.security.pachage si este proiectataatt pentru aplicatii de nivel scazut, ct sipentru cele de nivel ridicat. Include clasepentru semnaturi digitale, rezumat de me-saje, interfete abstracte pentru manage-mentul cheilor, management de certificatesi controlul accesului, respectnd standar-dul X.509. Toate aceste concepte au foststudiate n referatul nr.1.Arhitectura de claseJava Security APIcontine:- Java Crytography Architecture(JCA) reprezinta cadrul de acces si dedezvoltare a functionalitatilor criptograficepentru platforme Java si cuprinde partileinterfetei Java Security API, prezentate caun set de conventii si specificatii criptogra-fice;

    -

    Java Crytography Extension (JCE) reprezinta extinderi ale JCA API, care in-clude criptarea si schimbul de chei; mpre-una cu JCA, ofera o platforma indepen-denta de criptografie; JCE este supus in-terdictiilor de export ale guvernului SUA.Clasele si interfetele Java Security API

    sunt urmatoarele:- clasa Provider este o interfata la unpachet si ofera metode de acces la nume defurnizori, care au implementati diferiti al-

    goritmi de criptare (DES si RSA), de sem-natura digitala (DSA, MD5, RSA), pentru

  • 8/3/2019 !Revista Ase Lucrul Cu Bd in Java - Java - Securitate

    5/5

    RevistaInformatica Economica, nr. 2 (18)/200164

    calculul rezumatului mesajului (SHS-1,MD5);- clasa Security controleaza instalareafurnizorilor si proprietatilor de securitate si

    contine metode statice (care nu pot fiinstantiate);- clasa MessageDigest ofera algoritmipentru calculul rezumatului de mesaj(SHS-1, MD5); presupune urmatorii pasi:crearea unui obiect MessageDigest, ncar-carea obiectului si prelucrarea rezumatului;- clasa Signature ofera facilitati de rea-lizare a semnaturilor digitale criptografice,folosind algoritmii DSA, RSA, MD5; pasiinecesari sunt: crearea unui obiectg

    Signature, initializarea obiectului si semna-rea unor date sau verificarea semnaturiialtor date.

    n acest moment, Java nu ofera standardede criptare pentru transportul fisierelorprin Internet, acestea depinznd de securi-tatea implementata de mecanismul de

    transport utilizat.n forma sa actuala, limbajul Java este de-parte de a fi securizat n mod eficient, fiindnecesara reproiectarea unor elemente dinlimbaj, a formatului bytecode-urilor si aruntime-system-ului. Prezenta unor astfelde slabiciuni n Java nu implica faptul caalte sisteme sunt mai sigure iar securitateape Web ramne totusi o problema, prinfaptul ca solutia oferita, Java, este nca in-completa.

    Bibliografie

    *** java.sun.com/products/;*** Java Development Kit 1.2, docu-

    mentatie;