Upload
semir-murselovic
View
241
Download
8
Embed Size (px)
Citation preview
UNIVERZITET U SARAJEVU
FAKULTET ZA SAOBRAĆAJ I KOMUNIKACIJE
SEMINARSKI RAD
INFORMACIONI SISTEMI U SAOBRAĆAJU I KOMUNIKACIJAMA
Web tehnologije – razvoj web aplikacija
Profesor: Studenti:V.prof.dr. Mujo Hebibović Edis RuščukićV.asis.mr. Samir Falagić Irna Novalić
Remhad ZolotaSabina Kovač
2 Seminarski rad Web tehnologije – razvoj web aplikacija
Borko PerendijaSemir Murselović
Sarajevo, maj 2010
SADRŽAJ
UVOD .................................................................................................................................... 3
POJAM WEB APLIKACIJE ............................................................................................ 4
PHP ....................................................................................................................................... 11
MySQL .................................................................................................................................. 14
ASP.NET .............................................................................................................................. 16
AJAX ...................................................................................................................................... 18
HTML, XML ......................................................................................................................... 21
JAVA ....................................................................................................................................... 24
SIGURNOST I RANJIVOST WEB APLIKACIJA ....................................................... 27
ZAKLJUČAK ....................................................................................................................... 34
LITERATURA ...................................................................................................................... 35
2
3 Seminarski rad Web tehnologije – razvoj web aplikacija
UVOD
U zadnjih deset godina, Internet je prihvaćen od oko milijardu i pol korisnika i poslova kao jeftin kanal za komunikaciju, razmjenu informacija i transakcije sa kupcima. Današnje Web aplikacije su daleko od statitičkih stranica iz sredine devedesetih. Moderne Web aplikacije omogućuju dohvaćanje personaliziranog dinamičkog sadržaja u skladu sa korisnikovim individualnim postavkama. Još važnije, moderne Web aplikacije omugaćavaju unos, procesiranje, pohranu i prijenos povjerljivih korisničkih podataka (npr. osobni podaci, brojevi kreditnih kartica, …) za trenutačno i buduća korištenja. Stvari kao što su webmail, stranice za prijavu (login), forme za podršku, shopping košarice, sustavi za upravljanje sadržajem (CMS) oblikuju moderne Web stranice i prožaju firmama sredstva za komunikaciju sa klijentima.
Korisnici (klijenti) Web aplikacije mogu jednostavno slati i primati podatke putem omiljenog Web pretraživača (Web browser). Najčešće su ti podaci u bazi podataka. Aplikaciji se pristupa preko mreže (Interneta ili intraneta) iz Internet pretraživača (nikakav dodatni softver nije potreban na klijentskom računalu). Web aplikacija generira dinamički sadržaj koji se zatim prezentira u klijentovom pretraživaču. Još jedna prednost za izradu i održavanje Web aplikacija je ta da funkcioniraju bez obzira koji je operacijski sustav ili pretraživač instaliran na klijentskom računalu. Mogućnost popravljanja i održavanja web aplikacije bez uznemiravanja i instaliranja softvera na hiljade klijenata je glavni razlog njihovoj popularnosti.
3
4 Seminarski rad Web tehnologije – razvoj web aplikacija
POJAM WEB APLIKACIJE
Web aplikacija je aplikacija kojoj se pristupa putem web-a koristeći Internet ili Intranet mrežu.1 Internet = javna mreža temeljena na TCP/IP protokolu (TCP/IP = Transmission Control Protocol/Internet Protocol)Intranet = privatna mreža neke tvrtke ili institucije kojom se podaci također prenoseputem TCP/IP protokola (zaštićen pristup samo korisnicima unutar tvrtke)
Web aplikacije su otvoreni ili zatvoreni sustavi upravljanja sadržajem važnim za vaše poslovanje. To mogu biti "jednostavne" web shop aplikacije, sustavi za upravaljanjem sadržaja, knjigovodstveni sustavi ili specijalizirani sustavi upravljanja i kontrole kompletnog procesa organizacije proizvodnje u najrazličitijim poslovnim granama.Web aplikacije ne moraju nužno značiti da su smještene na internetu i kao takve podložne potencijalnim "napadima hackera" već se lako uz relativno mala uložena sredstva mogu smjestiti u interno okruženje vašeg poslovnog prostora. Web aplikacija je samo naziv za bilo koji oblik software-a (izrađen u nekoj web tehnologiji) koji se izvršava na jednom centralnom mjestu (serveru), a na njega se može istovremeno spojiti neograničeni broj korisnika koristeći samo web browser (Internet Explorer, Firefox i sl.)Korisnici (klijenti) Web aplikacije mogu jednostavno slati i primati podatke putem omiljenog Web pretraživača. Aplikaciji se pristupa preko mreže iz internet pretraživača (nikakav dodatni softver nije potreban na klijentskom računalu). Web aplikacija generira dinamički sadržaj koji se zatim prezentira u klijentovom pretraživaču. Kostur web aplikacija je softverski kostur, koji je dizajniran da podrži razvoj dinamičnih web stranica, web aplikacija i web servisa.
Razlika između Web sajta (čvora), odnosno Web sistema i Web aplikacije:
Web sistem je hipermedijski sistem za prikaz tekstualnih, video, audio i drugih dokumenata. Web aplikacija je Web sistem koji može da izvrši poslovnu logiku pomoću Web browser-a.
Web aplikacije se najčešće sastoje od sljedećih aktivnosti:
1. Korisnik aktivira web preglednik2. Putem web sučelja postavi određeni upit (npr. traži cijenu nekog artikla i sl.)3. Sučelje za upite šalje zahtjev programu na poslužitelju4. Program na poslužitelju daje odgovor na zahtjev koristeći neki izvor podataka 5. Odgovor se iz baze prosljeđuje preko poslužitelja na klijent6. Odgovor preko web sučelja postaje vidljiv korisniku.
1 http://en.wikipedia.org/wiki/Web_application
4
5 Seminarski rad Web tehnologije – razvoj web aplikacija
Principi rada web aplikacija
Web aplikacija dinamički generira niz html dokumenata koji se mogu vidjeti s pomoću web preglednika
Ako se žele dodati neki dinamički elementi u korisničko sučelje, koriste se skriptni jezici koji se izvode na klijentskoj strani (npr. JavaScript)
Svaka pojedina stranica prikazuje se korisniku kao statični dokument (stranicu), ali se stranice interaktivno mogu mijenjati u aplikaciji
Korisnik može podatke unositi s pomoću web formi koje su uključene u stranice Aplikacija se sastoji od sesija (eng. sessions) Za vrijeme svake sesije, web preglednik interpretira i prikazuje stranice, tj. web
preglednik vrši ulogu sučelja aplikacije prema korisniku.
Razvoj web aplikacija
Problem razvoja Web aplikacija može se rješiti metodološkom i tehnološkom podrškom za svaku fazu procesa. Da bi se kreirala Web aplikacija iole dobrih osobina, sa ograničenim budžetom i vremenom razvoja, projektanti treba da prate precizno definisani razvojni proces, po mogučnosti podržan pogodnim alatima i notacijama. Razlićiti modeli procesa (model vodopada, spiralni model, prototipni model) mogu se prilagoditi i iskoristiti za potrebe razvoja aplikacije.
Osim što se C# programski jezik može upotrebljavati za razvoj stolnih (desktop) aplikacija i (kakve smo do sada obrađivali) i klijent-server aplikacija, može se koristiti i za razvojweb aplikacija.Microsoft okruženje za razvoj web aplikacija naziva se ASP . NET
Razvojni proces web aplikacija:
Faza 1: Korisnički zahtjev i slučajevi korišćenja Faza 2: Analiza Faza 3: Projektovanje Faza 4: Implementacija Faza 5: Testiranje i održavanje
Faza 1. U ovoj fazi se identificiraju korisnički zahtjevi i slučajevi korištenja.
Faza 2. Za vrijeme analize zahtjeva, projektant prikuplja neophodne informacije od naručilaca i budućih korisnika sistema vezane za sadržaj, strukturu, pristup i izgled. Zahtjevi vezani za sadržaj definirajuu informacije specifične za domen aplikacije koje moraju biti raspoložive na samoj Web stranici.
5
6 Seminarski rad Web tehnologije – razvoj web aplikacija
Faza 3. Bazirana na zahtjevaima, faza projektovanja definira cjelokupnu strukturu web stranice, opisujuči način na koji će ona biti organizovana i kako će se korisnici kretati kroz nju. Bilo koja projektna metodologija se može koristiti, kao što su HDM, RMDM ili OOHDM. Kod projektovanja Web aplikacija HDM razlikuje sloj podataka i sloj pristupa. Sloj podataka je srž aplikacije i modelira strukturu informacije koja predstavlja domen
Faza 4. Faza implementacije kreira Web stranicu na osnovu projekta. U prvom koraku, elementi i veze koji su naznačeni u fazi projektovanja se preslikavaju u odgovarajuće konstrukcije koje poseduje izabrana implementaciona tehnologija. U drugom koraku, stranica se postavlja. Tekuće informacije se ubacuju instanciranjem odgovarajučih struktura koje definiše prethodni korak i definisanjem strukturalnih i aplikacionih veza među elementima. Tada se kreiraju kolekcije da bi obezbedile struktuirane pristupe do sadržaja Web aplikacije.Treći korak uključuje modifikovanje aplikacije da bi zadovoljila posebne zahteve koje koriste Web čitaći koji komuniciraju sa Web serverom korištenjem HTTP. Ovo se može postići prevođenjem implementacije stranice u skup datoteka i direktorijuma koje koristi niz standardnih WWW servera.
Faza 5. Možemo podjeliti održavanje u tri kategorije:
korektivno, je proces popravljanja grešaka koje postoje u implementaciji Web aplikacije. adaptivno - podešavanje Web aplikacije u odnosu na spoljašnje okruženje. perfekciono održavanje, ukljuèuje promenu Web aplikacije kako bi se poboljšao način na
koji su informacije struktuirane ili predstavljene krajnjim korisnicima.
Klijent-server i web aplikacije
Razlika između klijent-server aplikacija i web aplikacija:
-Kod klijent-server aplikacija svaka aplikacija sastoji se od dijela koji se izvodi na poslužitelju (serveru) i dijela koji treba instalirati na korisničko računalo (klijent). Klijent preko svog sučelja daje zahtjeve serveru koji ih izvodi, klijent dobiva izvještaje.
-U slučaju da tvrtka ima veliki broj klijenata, instaliranje i održavanje aplikacija na korisničkaračunala je tada sporo i zahtjevno.
- Kod web aplikacija, nasuprot tome, nije potrebno instalirati aplikaciju na korisničko računalo.
-Web aplikacija umjesto izvršne datoteke (.exe) generira skup dokumenata koji se mogu vidjeti spomoću web preglednika (npr. Internet Explorer, Mozilla Firefox i dr.) koji podržavaju html/xhtml/xml.
6
7 Seminarski rad Web tehnologije – razvoj web aplikacija
Strukture web aplikacija
Web aplikacije strukturirane su u tri glavna sloja (tzv. troslojna arhitektura ili eng. “three-tiered architecture”):2
1. Prezentacijski sloj – sloj prikaza informacija korisniku putem preglednika
2. Aplikacijski sloj - sloj koji upravlja aktivnostima koje aplikacija treba izvršavati (tj. obradom ili funkcioniranjem aplikacije)
3. Podatkovni sloj – sloj koji upravlja pohranjivanjem podataka u bazu i prikazom podataka iz baze na poslužitelju.
Patern arhitekture Web aplikacija
Patern arhitektura prikazuje šemu osnovne organizacione strukture softverskog sistema,ukazujući na skup predefinisanih podsistema, njihove odgovornosti i moguće veze između podsistema. Mogu se identifikovati tri paterna arhitekture za Web aplikacije:3
• Thin (tanki) Web klijent se koristi za Internet aplikacije sa standardnom konfiguracijom klijenta i browser-om koji podrazumeva rad sa formama. Cjelokupna poslovna logika se izvršava na serveru kao odgovor na traženu stranu od klijent browser-a.
• Thich (debeli) Web klijent se koristi kad se znatni dio poslovne logike izvršava na klijentovom računaru. U tom slučaju klijent koristi dinamički HTML – skriptovane strane na strani klijenta i custom objekti kao što su Java apleti ili ActiveX kontrole za izvršenje poslovne
2 http://www.webmajstori.net
3 http://www.webmajstori.net
7
8 Seminarski rad Web tehnologije – razvoj web aplikacija
logike. Komunikacija sa serverom i dalje se ostvaruje preko HTTP protokola. Razlika između tankog i debelog klijenta je u ulozi koju ima browser u izvršenju poslovne logike sistema.
Web delivery , pored HTTP protokola, koristi i IIOP, RMI ili DCOM da podrži rad sa distribuiranim objektima. U tom slučaju Web browser se koristi kao isporučilac (delivery) i container uređaj za distribuirani objektni sistem. Ovaj tip arhitekture se odnosi na klijent/server aplikacije sa distribuiranim objektima koje koriste Web server i browser klijenta kao značajne elemente sistema.
Slika 1. Thin Web Client Logical View Slika 2. Logical View of the Thick Web Client architecture pattern
8
9 Seminarski rad Web tehnologije – razvoj web aplikacija
Slika 3. Logical View of the Web Delivery architecture pattern
Osnove web aplikacije
HTTP - Hyper Text Transfer Protocol HTML - Hypertext Markup Language Forme - Forms Okviri – Frames Tehnologije podrške:
1. Moduli• ISAPI (MS Internet Server API)• NSAPI (Netscape Server API)• JAVA servlets
2. Skriptovane strane• JSP (Java Server Pages)• ASP (MS Active Server Pages)• Cold Fusion
9
10 Seminarski rad Web tehnologije – razvoj web aplikacija
Primjeri web aplikacija
1. Google pretraga - je zapravo Web aplikacija kojom se pretražuje internet.2. Gmail - jednako popularni i besplatni e-mail servis2. Yahoo - portal i tražilica3. Amazon - najpopularnija Web trgovina4. PayPal - posrednik kod plaćanja5. Facebook - društvena mreža5. Wordpress - jedan od popularnijih blog/CMS sustava6. Youtube - video sadržaji7. Wikipedia - online enciklopedija8. Google Maps - online karta9. last.fm - društveni radio
Višeredne web aplikacije
Višeredne aplikacije imaju sljedeće prednosti: – Neovisni slojevi– Preglednost– Prenosivost
Karakteristike: Tri sloja:
– Prezentacijski sloj (eng. Web layer)– Poslovni sloj (eng. business logic layer) – Podatkovni sloj (eng. data layer)
Prezentacijski sloj = korisničko sučelje - JSP, HTML, XML...Poslovni sloj = poslovna logika, tj. rukovanje podacima - ServletiPodatkovni sloj = baze podataka, skladišta podataka
Prednosti i nedostaci web aplikacija
Prednosti:– Rade bez obzira na operativni sustav koji je instaliran na korisnikovom računalu
(programer ne mora raditi sučelje posebno za Windows, MacOS, Unix, ili dr.).Nedostaci:
– Još uvijek nedovoljno usaglašeni standardi za HTML, CSS (Cascading Style Sheet) i DOM (Document Object Model) od strane proizvođača web preglednika
– Korisnik u svom pregledniku može samostalno podesiti neke parametre prikaza, npr. font, veličinu slova, i dr., pa se narušava konzistentnost prikaza aplikacije
– Brzina rada aplikacije ovisi o brzini mrežne povezanosti sa poslužiteljem na kojem se nalazi aplikacija (brzini Interneta ili intraneta)
– Problemi sa sigurnošću na mreži (zaštita protiv upada, virusa i dr.)
10
11 Seminarski rad Web tehnologije – razvoj web aplikacija
Prednosti web aplikacija u odnosu na slične "desktop" sustave su mnogobrojne:
- Lako održavanje- Promjene se mogu raditi "on-line" dok je aplikacija aktivna i korisnici ju koriste,- Za pristup aplikaciji korisnik treba samo web browser (tj. PC, Mac računalo, ili mobitel)- Idealne su ako imate više fizički odvojenih lokacija Vaše tvrtke,- Niska cijena (kupuje se samo jedna aplikacija, a ne desetak ili stotinjak licenci po računalu)
Podjela web aplikacija
Prema osnovnoj podjeli web aplikacije možemo podijeliti na slijedeće: Ajax ASP ASP.NET CSS ColdFusion Java EE HTML JavaScript Perl PHP Ruby, including Ruby on Rails CGI ISAPI/NSAPI XML
PHP
PHP je programski jezik interpreterskog tipa namjenjen izradi softverskih aplikacija koje se izvršavaju na Windows ili na UNIX-olikim serverima (npr. Linux). Podržava i proceduralno i objektno orjentirano programiranje. Najčešće se koristi kao razvojna platforma za interaktivne Internet stranice.
PHP je nastao iz PHP/FI kojeg je 1995. godine napravio Rasmus Lerdorf, kombinirajući Perl skripte na svojim osobnim web stranicama. Godine 1997. pojavilo se drugo izdanje PHP/FI-a - verzija 2.0, napisano u C-u.
Danas se koristi nova verzija PHP-a (PHP 5) koja je u potpunosti stabilna. Dolazi sa još više modula za podršku raznim novim tehnologijama (npr. XML), te će omogućava potpuno objekno orjentirano programiranje (prema uzoru na Javu).
11
12 Seminarski rad Web tehnologije – razvoj web aplikacija
Značajke PHP-a
PHP je open-source server-side skriptni programski jezik za dinamičko generiranje HTML koda.
Drugim riječima, PHP je skriptni programski jezik pomoću kojeg možete kreirati HTML stranicu na serveru prije nego što je ona poslana klijentu popunjenu dinamičkim sadržajem. Govorimo o radu sa template - ima. Ovim načinom generiranja sadržaja klijent ne može vidjeti kod (skriptu) koji je generirao sadržaj koji gleda, već ima pristup čistom HTML kodu.
Open-source u gornjoj definiciji znači da svatko tko želi može skinuti izvorne PHP kodove pisane u C-u i, ukoliko ih razumije, može ih mijenjati po svojoj volji te dodavati nove funkcije PHP-u. Štoviše, svi su pozvani da sudjeluju u razvoju novih verzija PHP-a. Izvorne kodove i instalacijske datoteke možete skinuti sa službenog PHP sitea.
Server-side programiranje i usporedba PHP-a sa ostalim server side tehnologijama PHP je jedna od najnaprednijih i najkorištenijih server-side skriptnih tehnologija danas u upotrebi. On je svojom sintaksom slićan mnogim drugim slićnim jezicima, čak i ima istoznačne (iste po sintaksi i funkcionalnosti) funkcije kao i neki drugi jezici kao što su C ili Perl. To znači da jednu radnju možete izvesti korištenjem više različitih funkcija.
Funkcioniranje PHP-a
PHP na strani web servera predstavlja pretprocesor kome se prosljeđuju PHP skripte. Ovo u praksi radi na slijedeći način, kreirate HTML stranice i u njih dodate i svoje PHP skripte, date stranice obavezno imaju ekstenziju "*.php". Kada ih postavite na web server i korisnik ih zatraži putem svog browser-a, web server će na osnovu ekstenzije prepoznati da se radi o PHP stranicama i proslijedit će ih instaliranom PHP pretprocesoru. Potom će pretprocesor izvršiti programski kod i rezultat vratiti web serveru, koji nakon toga sve šalje browser-u. Rezultat procesiranja su najčešće dinamički kreirane HTML stranice, koje se zasnivaju na podacima iz neke od baza podataka, najčešće MySQL.
PHP datoteke mogu sadržavati:4
o Teksto HTML tagoveo Skripte
PHP datoteke mogu imati nastavak (ekstenziju): ".php", ".php3", ili ".phtml". PHP datoteka se izvršava na poslužitelju, a zatim se vraća pregledniku kao običan HTML.
4 http://pear.php.net
12
13 Seminarski rad Web tehnologije – razvoj web aplikacija
Tipovi podataka koje podržava PHP su:
o Cijeli brojevi (integer) o Realni brojevi (floating-point numbers) o Tekstualni podaci (String) o Nizovi o Objekti
Varijable u PHP-u
o Varijable se koriste za pohranjivanje vrijednosti, npr. brojeva, stringova ili nizova, kako bi se mogli koristiti više puta u skripti.
o Sve varijable u PHPu počinju znakom: $, ako se znak “$” zaboravi staviti ispred imena varijabli, skripta neće raditi.
PHP funkcije: Operatori u PHP-u
o Array Funkcije o Datum i Vrijeme o Direktorijske Funkcije o File Funkcije o FTP Funkcije o MySQL Funkcije o Regularni Izrazi o Sessions o String Funkcije o Varijable
13
14 Seminarski rad Web tehnologije – razvoj web aplikacija
MySQL
MySQL je relacioni sistem za upravljanje bazama podataka (RSUBP) koji ima široku primjenu, ujedno je i baza podataka koja se najviše koristi pri radu u PHP-u. Razvijen od Švedske firme TcX. Višenitni je sistem za rukovanje relacionim bazama podataka, kontrolira tko smije koristiti baze, vodi evidenciju o procesima. Baza koja se sastoji od tablica sa stupcima koji su međusobno povezani. Međusobne veze su definirane ključnim vrijednostima u stupcima.
Odnosi u bazi :5
• One-to-One • One-to-Many • Many-to-Many
Kao što smo već spomenuli u uvodu prednost PHP-a pred drugim web skriptnim tehnologijama je rad sa bazama podataka, jedna od najčešće korištenih je MySQL baza podataka. MySQL je poslužitelj za bazu podataka (database server).
Karakteristike MySQL-a:
o Baza podataka u MySQL-u je u relacijskom modeluo Pogodan je za male i velike aplikacijeo Podržava SQL standard (SQL = Structured Query Language, tj. jezik za upite na
relacijskim bazama podataka)o Izvršava se na brojnim platformamao Besplatan je za download i upotrebu
Upiti (queries)
o Upit je pitanje ili zahtjev koje postavljamo bazi podataka.o Upitom tražimo iz baze određenu informaciju i dobivamo povratnu informaciju (recordset
koji odgovara postavljenom upitu)o Upiti se na relacijskim baza obavljaju s pomoću SQL jezika upita
5 http://www.webapplist.com
14
IlidžaKovači bbDalilaBukva
TarčinLuke 111AdiKalem
ZavidovićiStari drum 19IgorMarković
GradAdresaImePrezime
Redak = jedan slog tablice stupac = jedan atribut tablice
IlidžaKovači bbDalilaBukva
TarčinLuke 111AdiKalem
ZavidovićiStari drum 19IgorMarković
GradAdresaImePrezime
Redak = jedan slog tablice stupac = jedan atribut tablice
Bukva
Kalem
Marković
Prezime
Bukva
Kalem
Marković
Prezime
15 Seminarski rad Web tehnologije – razvoj web aplikacija
Primjer upita:
SELECT Prezime FROM Djelatnici
Ovaj upit traži sve podatke u stupcu Prezime tablice “Djelatnici”, i vratit će sljedeće podatke:
Što je to što MySQL čini tako posebnim:
o Dostupan je na Internetu i pri tome je besplatan. Ovo je veliki kontrast drugim komercijalnim sistemima za baze podataka (kao što su Oracle, MS SQL, Informix i sl.), kreiranih od strane velikih kompanija, koji su pri tome veoma skupi.
o Brzinao SQL-orijentacija
15
16 Seminarski rad Web tehnologije – razvoj web aplikacija
o Lakoća upotrebeo Portabilnosto Rapidni razvojo Interoperabilnosto Programibilnost
Tipovi podataka u tablici baze:
U tablici baze, atributi (stupci) mogu imati sljedeće tipove:o Numeričkeo Tekstualneo Datumskeo Ostale (enumeracije i set-ove)
ASP.NET
Nešto prije popularizacije PHP-a, na Web scenu stupa Microsoft, izdavanjem Option Packa za Windows NT Server, u kojem unutar IIS-a 4.0 (Internet Information Services) uvodi značajnu novost - prvu verziju tehnologije za web programiranje zvane Active Server Pages ili ASP.
Dvije godine kasnije, izlaskom Windowsa 2000, izlazi i IIS 5.0 sa ASP-om 3.0 što će, budućnost će pokazati, biti ujedno i posljednja inačica "klasičnog" ASP-a.
ASP.NET (Active Server Pages) je Microsoftov jezik za programiranje i kodiranje web stranica koji se koristi zajedno sa HTML-kodovima. ASP koristi skript jezik na strani servera da bi komunicirao sa drugom aplikacijom (koja, npr. obrađuje podatke). Novost kod ASP-a je da se ta skripta izvodi na serveru neposredno prije nego se stranica pošalje korisniku. Zapravo, rezultat izvođenja skripte je nova stranica. Novija verzija ASP-a se zove ASP.NET i dio je Microsoft-ovog NET koncepta.
Prednost ovakvih web stranica jeste to što mogu biti dinamične, interaktivne i sadržiti informacije sakupljene u bazi podataka (eng. database). ASP kodovi se učitavaju direktno na serveru i ne vide se u korisnikovom Internet pregledniku.
Posljednjih godina je kreiranje dinamičkih web aplikacija na strani servera postalo najvitalniji dio web razvoja. Sada, zahvaljujući ASP.NET-u i C#-u, možete izgraditi čistije, moćnije web aplikacije, i to možete uraditi brže nego ikada ranije.
16
17 Seminarski rad Web tehnologije – razvoj web aplikacija
Nabrojati ćemo nekoliko prednosti ASP.NET-a i to:
- može se pisati sa svim .NET-kompatibilnim jezicima, uključujući VB i C#- ASP.NET aplikacijama stoji na raspolaganju cijela .NET Framework platforma - pisanje iz Visual Studio.NET (GUI, integrisani debugger)- sintaksa velikim dijelom kompatibilna sa ASP (.aspx umjesto .asp je najlakša migracija na
ASP.NET)- dodavanje ASP.NET funkcionalnosti sa samo nekoliko linija code-a.
Korištenje ASP-a u odnosu na druge platforme za razvoj dinamičkih web aplikacijaProces formiranja ASP stranice:6
1. Kreira se HTML stranica zajedno sa skript kodom
2. Kod skripte se izvodi i kao rezultat nastaje nova stranica
3. Nova stranica se šalje korisniku; korisnik ne mora znati da li je ta stranica statička ili je nastala kao rezultat nekog programa koji se izvodi na serveru.
ASP stranice su vrlo slične HTML stranicama, jer sadrže HTML kod zajedno sa skript kodom. Osnovna razlika je dodatni skript kod. ASP stranice imaju ekstenziju .ASP, dok HTML stranice imaju ekstenziju .HTM ili .HTML
6 http://aspjavascript.com
17
18 Seminarski rad Web tehnologije – razvoj web aplikacija
AJAX
AJAX je skraćenica od Asynchronous JavaScript And XML. AJAX je vrsta programiranja koju je učinio popularnom Google 2005. godine (sa Google Suggest-om). AJAX nije novi jezik programiranja, već novi način da se koriste postojeći standardi. Pomoću AJAX-a vi možete da kreirate bolje, brže i prijateljskije web aplikacije sa stanovišta korisnika. AJAX je zasnovan na JavaScript i HTTP zahtevima.
Karakteristike AJAX-a
Aplikacija temeljena na HTML tehnologiji nefleksibilna je i kao takva teško prilagodljiva dinamičkom sadržaju koji bi se na njoj eventualno nalazio.Preglednik koji pokreće aplikaciju ne bi trebao biti opterećen sveukupnim mogućim sadržajem izbora korisnika u aplikaciji nego samo izvršavanjem aplikacije. Za uobičajenu web aplikaciju temeljenu na HTML tehnologiji, odnosno web stranicu, preglednik nije ništa drugo nego običan terminal. Nema nikakve podatke o tome gdje se trenutni korisnik nalazi u općem toku podataka. Sve te informacije pohranjene su na web poslužitelju, uglavnom u korisnikovim varijablama, što je i uobičajeno. 7
Ukoliko se radi u Java programskom jeziku ili pak u okruženju temeljenom na .NET tehnologiji, varijable pohranjene na poslužitelju su dio već ugrađenih API funkcija, zajedno sa zahtjevima prema poslužitelju, njegovim odgovorima i MIME6 (Multipurpose Internet Mail Extensions) tipovima.
Kao rezultat svake korisničke interakcije sa web aplikacijom, novi dokument se šalje web pregledniku, sadržavajući istu mješavinu podataka. Preglednik tada ponovo odbacuje stari odnosno već prikazani dokument, te nam podnosi novi jer nije prilagođen nikakvim drugim radnjama. Točnije, preglednik ne zna kako bi zadržao bitne stvari iz svih dokumenata, kao i one koje se ne mijenjaju, a osvježavao samo one na koje korisnik utječe. Nakon što korisnik odabere odjavu sa stranice, aplikacija se zatvori.
AJAX aplikacija seli jedan dio logike sa poslužitelja na preglednik. Nakon prijave za rad, nešto složeniji dokument biva poslan pregledniku, a njegov velik dio je JavaScript kod. Ti podaci ostaju na strani korisnika, iako se izgled modela vjerojatno mijenja kao rezultat korisnikove interakcije sa aplikacijom.
7 http://www.asp.net/ajax
18
19 Seminarski rad Web tehnologije – razvoj web aplikacija
Životni vijek AJAX web aplikacije
U životnom ciklusu Ajax aplikacija, poslužitelj ima dvostruku ulogu. Prva je isporučavanje aplikacije našem web pregledniku. Druga uloga poslužitelja je komunikacija s klijentom. Ta uloga sastoji se od analize upita te isporuke traženih podataka na zahtjev. Kod standardne web aplikacije, sâm kôd poslužitelja je uglavnom vrlo složen iz razloga što mora nadgledati rad korisnikovog toka rada i odluka tijekom izvođenja aplikacije, te cijelo to vrijeme u pozadini obrađivati transakcije. Također, kôd je pisan u određenom jeziku, za određen broj konvencija i pravila koja određuju što poslužitelj može, a što ne može napraviti. Jezik poslužitelja tada može biti vezan za određenu računalnu arhitekturu i operacijski sustav ili samo sklopovlje.
AJAX - web aplikacija
Postoje dvije vrste aplikacija koje danas prevladavaju, a to su desktop aplikacije i web aplikacije. Aplikacije poznate po brzini i vrlo velikoj dinamičnosti su desktop aplikacije dok su web aplikacije puno sporije ali prednost im je što pružaju neke usluge koje desktop aplikacijama nikada neće biti dostupne što je i razlog zbog čega su prihvatljivije od desktop aplikacija. Upravo taj nedostatak brzine ili sporost web aplikacija u odnosu na desktop aplikacije korigiran je razvojem AJAX‐a.
Kod arhitekture softverskog sustava tipa server/klijent koriste se dva tipa klijenata:- “Tanki klijent” (thin client) – je minimalni klijent; minimalno korištenje resursa hosta;
obrada podataka (poslovna logika) je na strani servera.- “Debeli klijent” (fat, rich, thick client) – je klijent koji obavlja i dio posla obrade
podataka; dio poslovne logike je prebacen na stranu klijenta. Tradicionalne web aplikacije radile
19
20 Seminarski rad Web tehnologije – razvoj web aplikacija
su s tankim klijentima, sva obrada bila je na strani servera, a klijent je prikazivao samo staticki sadržaj u obliku HTML stranice. Najveci nedostatak tankog klijenta je da sva interakcija aplikacije i korisnika ide preko servera. Svaki korisnikov zahtjev treba se proslijediti serveru. Klijentu se odgovor servera vraca opet kao staticki sadržaj.
Ajax problemi
- mnoštvo JavaScripta- potrebno testiranje i manja prilagodba različitim preglednicima- orisnik ne očekuje promjenu podataka na dijelu stranice niti čekanje na prijenos podataka- potrebno vizualno upozorenje- integracija s preglednikom Weba‐a- neprirodna funkcionalnost gumba "Back" i "Refresh"- teško spremanje "trenutne" stranice u Bookmarks/Favorites- Optimizacija za pretraživače Web stranice.
Sigurnost
Kad pokrenemo neku Ajax aplikaciju, web poslužitelj šalje skup JavaScript naredbi pretraživaču koji se nalazi na nekom udaljenom računalo, o kojemu poslužitelj zna vrlo malo. Pretraživač tada započinje s izvođenjem tih istih naredbi. Puštajući preglednik da započne izvršavanje, njegovi korisnici polažu puno povjerenja u Ajax aplikaciju i njezine autore. Proizvođači tog pretraživača kao i razni standardi, redovito pretpostavljaju da to povjerenje nije uvijek opravdano, te su ugradili sigurnosne mjere kako bi spriječili izvršavanje zloćudnog kôda.8
8 http://www.asp.net/ajax
20
21 Seminarski rad Web tehnologije – razvoj web aplikacija
HTML, XML
HTML
Upotrebljavajući SGML kao predložak, u ljeto 1991. godine napravljene su prve specifikacije HTML-a (Hyper Text Markup Language). HTML je podskup Standard Generalized Markup Languagea (SGML) za razmjenu elektronskih dokumenata.
SGML je meta-jezik za definiranje i standardiziranje strukture dokumenata. SGML tako|er opisuje gramatiku koju možemo koristiti za dizajniranje drugih markup jezika. HTML nije programski jezik kao što su C++, Java, Pascal ili Perl. HTML je bio fiksiran programski jezik sa tačno definisanim setom naredbi, u obliku HTML tagova,kojih se svi HTML dokumenti moraju pridržavati.
Iako je sazrijevao i razvijao se kroz period od svog nastanka do danas, omogućujući manipulaciju i korištenje slika u HTML dokumentima i integraciju sa ostalim tehnologijama, HTML je prvobitno bio namjenjen samo formatiranju teksta, što se može vidjeti i iz njegovog punog imena. Napravljen je kako bi omogućio developerima da definišu kako će se tekst u njihovim dokumentima prikazati na korisničkom računaru, te da omogući korisniku pristup ostalim dokumentima povezanih hyperlinkovima. HTML dokument čine posebni tagovi umetnuti u ASCII dokument. Te tagove tumače programi Web pretraživača, koji oblikuju i prikazuju dokument.
HTML dokument se sastoji od dva logična dijela: glave i tijela.
Glava sadrži informacije o dokumentu; tijelo sadrži informacije samog dokumenta. Kao što se može pretpostaviti, zaglavlje je zatvoreno s <HEAD> i </HEAD, a tijelo je zatvoreno<BODY> i </BODY> tagovima. Glava HTML stranice sadržava informacije vezane uz sam dokument. U zaglavlje se mogu smjestiti različiti tagovi. Tijelo HTML stranice sadržava većinu elemenata koji se vide kad stranicu gledate pomoću Web pretraživača. Tu unosite sve elemente koje želite da ljudi vide, kao što je tekst, grafika, veze (URL-ovi), popisi i tablice.
Osnovna HTML sintaksa sastoji se od tri komponente: tagovi, atributi i URL-ovi. Svaka od tihkomponenti detaljno opisuje kako se ti elementi trebaju oblikovati i prikazati.
Tagovi
Osnovni građevni element HTML-a su tagovi koji govore Web pretraživaču kako prikazati tekst i grafiku zajedno s drugim oblikovanim informacijema. Tagovi se pišu u oštrim zagradama (<tag_name>), a većina tagova treba i završni tag (</tag_name>)
21
22 Seminarski rad Web tehnologije – razvoj web aplikacija
Atributi
Ponekad tagovi trebaju bolje opisati tačnu informaciju, na primjer, gdje se nalazi datoteka.Atributi se koriste zajedno sa tagovima kako bi dali više detalja o izvršavanju taga.
URL-ovi
Web resursima se pristupa preko opisnih adresa poznatim kao uniform resource locators (URLovi).Sve čemu pristupate na Webu ima URL. HTML koristi URL-ove za određivanje lokacije potrebne datoteke ili druge Web stranice koje su povezane preko hipertekst veza.
Slika: Jednostavna HTML stranica
XML
XML je kratica za EXtensible Markup Language - odnosno jezik za označavanje podataka. Ideja je bila stvoriti jedan jezik koji će biti jednostavno čitljiv i ljudima i računalnim programima.
Princip realizacije je vrlo jednostavan: odgovarajući sadržaj treba se uokviriti odgovarajućim oznakama koje ga opisuju i imaju poznato, ili lako shvatljivo značenje. Format oznaka u XMLu vrlo je sličan formatu oznaka u npr. HTML jeziku. Danas je XML jezik vrlo raširen i koristi se za različite namjene: odvajanje podataka od prezentacije, razmjenu podataka, pohranu podataka,
22
23 Seminarski rad Web tehnologije – razvoj web aplikacija
povećavanje dostupnosti podataka i izradu novih specijaliziranih jezika za označavanje. XML je standardizirani jezik i za njegovu standardizaciju brine se World Wide Web Consortium.
XML je jezik koji objedinjuje jednostavnost HTML-a i izražajnu snagu SGMLa. Da bi se izradio taj jezik moraju biti ispunjeni slijedećih 10 uvijeta:9
1. XML mora biti izravno primjenjiv preko interneta2. XML mora podržavati širok spektar primjena3. XML mora biti kompatibilan s SGLM-om4. Mora biti lako pisati programe koji procesiraju (parsiraju) XML dokumente5. Broj opcionalnih "feature-a" u XML-u mora biti apsolutno minimalan, u idealnom slučaju
jednak nuli6. XML dokumenti moraju biti čitljivi ljudima, te u razumnoj mjeri jednostavni7. Standard mora biti specificiran što prije8. Dizajn XML-a mora biti formalan i precizan9. Kreiranje XML dokumenata mora biti jednostavno10. Sažetost kod označavanja dokumenta XML-om je od minimalnog značaja
XML atributi
XML atributi nude podatke koji dodatno opisuju XML elemente. Podaci koji se navode kao atributi mogu biti zanimljivi čovjeku koji gleda sadržaj XML dokumenta (npr. ime osobe koja je kreirala poruku) ili računalnom programu koji parsira XML dokument (npr. vrsta i veličina fonta kojim se treba prikazati sadržaj poruke na ekranu). Atributi imaju svoj naziv i vrijednost koja se navodi pod navodnicima.
9 http://www.w3schools.com/XML/xml_xsl.asp
23
24 Seminarski rad Web tehnologije – razvoj web aplikacija
JAVA
Programski jezik, razvijen od strane Sun Microsystems koorporacije, čija je namjena stvaranje programa, koji se bezbjedno download-uju na vaš računar i odmah interpretiraju, bez straha od virusa ili neke druge štete na vašem računaru.
JAVA je jednostavan, objektnoorijentiran, distribuiran, interpretiran, robustan, siguran,prenosiv, visokoucinkovit, višenitan i dinamicki programski jezik.
Karakteristike JAVA-e
Jednostavnost
- brzo se uči jer je broj stvari koje treba upamtiti malen- iako temeljena na C++ izostavljene su sve nejasne i konfliktne situacije (C++--)- umjesto GO TO naredbe, BREAK i CONTINUE za nadziranje programa- nema pokazivača (programeri se ne mogu oslanjati na memorijske adrese niti saznavati
njihov sadržaj)- automatsko upravljanje memorijom (garbage collector).
Objektna orijentiranost
- usredotočenost na objekte i metode pomoću kojih se obavlja neki posao- osnovni element građenja programa u Javi je KLASA (skup metoda i varijabli koje
obavljaju određeni zadatak)- Java detaljno prati stanje svakog od objekata, a objekti sadrže sve informacije o svojim
matičnim objektima.
Distribuiranost Java ima ugrađene sve osnovne funkcije za rukovanje mrežnim protokolima.
Prenosivost
- neovisnost od platformi- napiši jednom, izvršavaj bilo gdje, bilo kada i zauvijek !- vezana uz značajku – interpretiranje.
24
25 Seminarski rad Web tehnologije – razvoj web aplikacija
InterpretiranjePrevođenje i izvršavanje Java aplikacije podijeljeno je u dvije faze:
1. Java kompilator iz izvornog koda programa stvara bajt-kod (tzv. J-kod)2. Java izvršni sustav koji interpretira bajt kod i prevodi njegove naredbe u naredbe specifične za računalo na kojemu se izvršava aplikacija.
Robusnost- Javina namjena za opću elektroniku stavila je naglasak na robusnost- precizno određivanje tipova podataka I deklariranja metoda omogucava Java kompilatoru
pronalaženje programskih pogrešaka- Java memorijski sustav sam vodi brigu o oslobađanju i zauzimanju memorije- sustav iznimaka omogučava jednostavnu obradu pogrešaka u programu.
Sigurnost- predmet velikih rasprava- Interpreter provjerava ispravnost bajt-koda tijekom izvršavanja i sprječava izvršavanje
sumnjivog koda i koda koji bi sadržavao nedozvoljene Interpreter određuje memorijski raspored klasa
- Interpreter provjerava svaku od naredbi tijekom izvršavanja, a od 1997 mogučnost “potpisivanja Java aplikacija”.
Učinkovitost
- Java – križanac između interpreter i kompiliranog jezika- brzi interpretirani jezik- JIT (Just-In-Time) kompilatori.
25
26 Seminarski rad Web tehnologije – razvoj web aplikacija
Višenitnost
- bez ikakvih dodataka, standardno podržava višenitno izvršavanje programa- višenitnost omogučava programeru da unutar svog programa pokrene više niti izvršavanja
i time ubrza rad programa.
DinamičnostJava programu se bez problema mogu dodavati novi objekti8.1.1. Java tipovi podataka
Dvije su osnovne skupine Java tipova podataka i to: jednostavni i složeni.10
Jednostavni- cjelobrojni (byte, short, int, long)- za brojeve s pomičnim zarezom (float, double)- znakovni (char)- logićki (boolean)
Složeni- polja- klase- sučelja
Osnovna osobina JAVA tipova: fiksna domena (podrućje), zbog osiguranja portabilnosti.
10 http://java.sun.com
26
27 Seminarski rad Web tehnologije – razvoj web aplikacija
SIGURNOST I RANJIVOST WEB APLIKACIJA
Sigurnost Web aplikacija je postala gorući problem unutar cjelokupne sigurnosti Interneta.U zadnje četiri godine čak više od 50% svih ranjivosti u CVE (Common Vulnerabilities andExposures) bazi su ranjivosti Web aplikacija.
Najugroženije i najnesigurnije su Web aplikacije koje su posebno izrađene za određenog korisnika po njegovoj specifikaciji. Najčešće ranjivosti web aplikacija su:
- izvršavanje napadačkog koda- curenje informacija- SQL ubacivanje- razdvajanje HTTP odgovora - SSI ubacivanje
Klasifikaciji Klase ranjivosti, odnosno klase napada se dijele na:
1. Napadi na autentifikaciju
Autentifikacija, sa gledišta Web aplikacije, je proces kojim se provjerava identitet korisnika određene usluge Web aplikacije.Brute force napadi predstavljaju automatizirani proces koji se koristi metodom pogađanja i promašaja kako bi se otkrilo korisničko ime, lozinka, kriptografski ključ ili broj kreditne kartice. Ova vrsta napada je vrlo česta i relativno uspješnaNedovoljna razina autentifikacije nastupa kada Web aplikacija omogućava potencijalnom napadaču pristup osjetljivom sadržaju ili funkcionalnosti, a da se pritom napadač nije propisno autentificirao.Nedovoljnom zaštitom korisnikove lozinke se omogućava napadaču da ilegalno dobije, promijeni ili obnovi lozinku drugog korisnika.
2. Ranjivost na autorizaciju
Autorizacija, s gledišta Web aplikacija, je proces kojim se utvrđuje da li određeni korisnik, usluga ili aplikacija ima potrebna dopuštenja za izvođenje određene radnjeNedovoljnom autorizacijom, Web aplikacija omogućava napadaču pristup sadržaju ili funkcionalnosti koja bi inače trebala biti zaštićena višom razinom sigurnosti.Nedovoljnom kontrolom trajanja korištenja usluge, Web aplikacija omogućava napadaču korištenje starih vjerodajnih identifikacijskih brojeva (engl. Session ID) za autorizaciju.
27
28 Seminarski rad Web tehnologije – razvoj web aplikacija
Slijed napada je sljedeći:1) Napadač pristupi Web aplikaciji kako bi dobio trenutni Session ID. Web aplikacija mu vraćaSession ID s vrijednošću 1000.2) Pošto napadač zna da se radi o inkrementirajućem algoritmu za generiranje Session ID-a,napadač jednostavno izračuna vrijednost sljedećeg Session ID-a (vrijednost 1001).3) Napadač izmjeni vrijednost Session ID-a unutar Cookie-a ili URL-a na vrijednost 1001 iupućuje zahtjeve Web aplikaciji sve dok se ne prijavi sljedeći korisnik. Nakon što se korisnikprijavi, napadač može korisiti njegove privilegije koristeći izračunati Session ID.
Fiksacija usluge
Fiksacijom usluge napadač podvaljuje korisniku fiksni vjerodajni identifikacijski broj (engl. Session ID), koji kasnije napadač koristi za autorizaciju.Postoji mnoštvo napadačkih tehnika pomoću kojih se Session ID može fiksirati na neku eksplicitnu vrijednost. Najčešće tehnike su Cross-site scripting napadi i posebno prilagođeni HTTP zahtjevi. Cilj ove tehnike je, nakon što napadač postavi Session ID na neku fiksnu vrijednost, sačeka korisnika da se prijavi na tu predefiniranu sjednicu s podvaljenim Session ID-om. Nakon što se korisnik prijavi, napadač upotrebljava taj Session ID, pridobiva korisnikov identitet i koristi njegove privilegije.Bez aktivne zaštite protiv fiksacije usluge, napad se može izvesti nad bilo kojom Web aplikacijom koja korisi Session ID-e kako bi identificirala korisnike. Web aplikacije koje koriste Session ID-e se najčešće oslanjaju na Cookie , nešto manje koriste URL i skrivena polja. Nažalost, upravo Web aplikacije koje koriste Cookie su najranjivije jer je većina današnjih napada usmjerena baš prema Cookie-ma.Uobičajna fiksacija usluge se sastoji od 3 sljedeće faze:1. Postavljanje Session ID-aNapadač postavlja klopku za određenu Web aplikaciju kako bi pridobio njen Session ID,ili postavlja neki vlastito skrojeni Session ID (ovisi o sustavu na koji aplikacija radi).2. Fiksacija uslugeNapadač predstavlja klopku ili vlastiti skrojeni Session ID određenom korisniku, te gauvjerava da ta usluga potječe od sam Web aplikacije.
28
29 Seminarski rad Web tehnologije – razvoj web aplikacija
3. Ulazak i korištenje uslugeNapadač čeka dok se korisnik ne ulogira na traženu Web aplikaciju. Kada to korisnik napravi,tada napadač posjeduje fiksirani Session ID kojima preuzima korisnička prava i identitet.Pogledajmo sljedeći primjer koji prikazuje fiksaciju usluge. Slika 3.2. prikazuje web poslužiteljonline.worldbank.com na kojem je postavljena bankovna Web aplikacija usmjerena premakorisnicima. Session ID -evi se prosljeđuju korisnicima koristeći URL argument sessionid.
U prvom koraku, napadač koji je također legitimni korisnik bankovnog sustava, se ulogira na poslužioca (1) i dobije session ID s vrijednošću 1234 (2). Nakon toga napadač pošalje posebnoskrojeni hyperlink http://online.worldbank.dom/login.jsp?sessionid=1234 korisniku, te pokušava namamiti korisnika da pritisne hyperlink (3). Korisnik pritišće hyperlink, koji otvara poslužiteljsku stranicu za ulogiravanje u korisnikovom Web pregledniku (4). Potrebno jenaglasiti da je za prilikom prihvata zahtjeva login.jsp?sessionid=1234, Web aplikacija većotvorila sjednicu za danog korisnika i nova sjednica nije potrebna. Na kraju, korisnik upisuje svoje korisničko ime i lozinku (5) te ih prosljeđuje poslužitelju kako bi mu dodijelio pristup bankovnom računu. Ali, napadač također zna session ID , te može pristupiti korisnikovom računu koristeći account.jsp?sessionid=1234 (6). Kako je session ID već bila unaprijed fiksirana prije nego što se korisnik ulogirao, kažemo da se korisnik ulogirao u sjednicu postavljenu od napadača.
29
30 Seminarski rad Web tehnologije – razvoj web aplikacija
3. Napadi na klijentsku stranu
Napadi na klijentsku stranu su orijentirani prema korisnicima Web aplikacija. Kada korisnik posjeti određenu Web aplikaciju, uspostavlja se povjerenje između korisnika i poslužitelja, odnosno Web aplikacije. Korisnik očekuje od Web aplikacije da će mu ona dostaviti ispravan sadržaj i da se prilikom njegovog korištenja Web aplikacije neće dogoditi nikakav napad na njega.Ubacivanje nepostojećeg sadržaja je vrsta napada kojom napadač želi uvjeriti korisnika da je određeni sadržaj legitiman i da ne potječe s nekog vanjskog izvora.
Primjer: OSL web (slika 4.1). Na službenoj stranici FER OSL-a je primijećena Cross-site scripting ranjivost. Općenito, da bi testirali pojedinu Web aplikaciju na XSS ranjivost, potrebno je ubaciti jednostavnu Javascript alert poruku <script>alert(XSS)</script> u dio Web aplikacije kojise može nanovo vidjeti (najčešće URL ili poruke unutar nekog foruma). Nakon što se postavi poruka, potrebno je pogledati da li će Web preglednik reagirati pop-up prozorom s porukom. Ako se prozor pojavi, to je znak da se skripta izvršila i da postoji XSS ranjivost.
U našem slučaju, posljedica XSS napada je krađa Cookie-a. Koristeći sljedeći skrojeni link koji u sebi sadrži skriptu prikaže se pop-up prozor koji ispiše korisnički Cookie:http://www.osl.fer.hr/index.php?option=com_remository&Itemid=27&func=select&id=<script>alert(document.cookie);</script>Iz primjera je vidljiv način na koji se može ukrasti korisnički identitet.Ovo je jedna od češćih napadačkih tehnika, pa je potrebno provesti dodatne sigurnosne mjere kako bi se izbjegla ova vrsta napada:
30
31 Seminarski rad Web tehnologije – razvoj web aplikacija
● Onemogućavanje skripti kada one nisu potrebne. Na ovaj način se sprečava izvršavanje kodaunutar korisničkog Web preglednika putem skripti (unutar URL-a), ali i dalje postoji opasnostod posebno skrojenih napadačkih HTML dokumenata koji se najčešće prosljeđuju korisnikuputem e-maila.● Filtriranje korisničkih zahtjeva. Na ovaj način, Web aplikacija uvijek provjerava korisničkezahtjeve i filtrira posebne meta znakove definirane HTML specifikacijom kako bi ustanovila10Slika 4.1. XSS ranjivostda li korisnički zahtjev sadrži skriptu. Ukoliko zahtjev sadrži skriptu, Web aplikacija sprečavaprikazivanje štetnog HTML dokumenta unutar korisničkog Web preglednika.● Kodiranje stranica. Cross-site scripting napadi se mogu izbjeći ukoliko Web poslužiteljpravilno kodira generirane stranice kako bi onemogućio nenamjerno izvršavanje skripti.
4. Logičke ranjivosti
Logičke ranjivosti dozvoljavaju napadačima korištenje napadačkih tehnika koje su namijenjene narušavanju ili zloupotrebi poslovnog toka (engl. workflow) Web aplikacije.Postoje razni primjere aplikacijske logike, a najpoznatiji su: proces za obnovu lozinke, registracija računa ili online kupovina.
Napadi automatiziranim procesima nastupaju kada Web aplikacija omogući napadaču izvođenje automatiziranog procesa koji bi se inače po svojoj prirodi trebao ručno izvesti odstrane korisnika.Narušavanje kontrole procesa nastupa kada Web aplikacija dopusti napadaču zaobilaženje ili promjenu uobičajnog kontrolnog toka aplikacije. Ova vrsta napada je česta ukoliko se korisnički stanje ne provjerava unutar određenih aplikacijskih procesa.
Alati za otkrivanje ranjivosti Web aplikacija
Organizacije koje za svoje poslovne procese koriste Web aplikacije, susreću se s sve većim problemom zaštite Web aplikacija. Čak 95% organizacija su bile žrtve barem jednog sigurnosnog incidenta vezanog uz Web aplikacije.Kako bi se pronašle i identificirale ranjivosti, koriste se različiti alati za ispitivanje sigurnosti. Alati se po načinu rada mogu podijeliti u dvije skupine:
1. Alati za ručno otkrivanje ranjivosti
Ručno otkrivanje ranjivosti je najstarija metoda provjere sigurnosti Web aplikacija. Nekada,ali i danas u manjoj mjeri, programeri u procesu razvoja Web aplikacija, koriste alate za ručno otkrivanje kako bi ispitali Web aplikacije.
31
32 Seminarski rad Web tehnologije – razvoj web aplikacija
Najčešće ranjivosti Web aplikacija koje se otkrivaju ručnim ispitivanjem su:
● mogućnost modifikacije cijene proizvoda● krađa identiteta korisnika● stvaranje lažnog korisničkog računa● manipulacija poslovnom logikom● povećanje korisničkih privilegija● ilegalni prijenos novčanih sredstava
2. Automatizirani alati za otkrivanje ranjivosti
Glavni cilj automatiziranih alata je automatizacija procesa otkrivanja unutarnjih struktura Web aplikacije i snimanje mogućih točaka napada kako bi se otkrile ranjivosti. Automatizirani alati su složeni sustavi koje provode istraživanje struktura i stabla linkova,analizu i testiranje Web aplikacija u potrazi za tehničkim ranjivostima.
Attack Tool Kit (ATK) je besplatni alat razvijen u Visual Basic-u za Windows platformu koji se koristi za brzo otkrivanje poznatih ranjivosti.
Wapiti je alat otvorenog koda za automatizirano otkrivanje nepoznatih vrsta ranjivostiWeb aplikacija. Napisan je u Python programskom jeziku pod GPL licencom pa se može slobodno koristiti i prilagoditi korisničkim potrebama. Dijelovi Wapiti-a su korišteni u programskoj implementaciji sustava za otkrivanje vrste Web aplikacija.
Sustavi za ispitivanje sigurnosti web aplikacija
Sustav za ispitivanje sigurnosti Web aplikacija je modularni sustav pomoću kojeg se vrši proces otkrivanja ranjivosti u Web aplikaciji. Specijalisti i provaljivači najčešće otkrivaju ranjivosti automatiziranim alatima i analizom programskog koda Web aplikacije otvorenog koda.Nakon otkrivanja ranjivosti, specijalisti opisuju i klasificiraju ranjivost, te naznačuju ranjivi dio Web aplikacije (najčešće parametar) i čak opisuju cjeloviti napad pomoću kojeg se može kompromitirati Web aplikacija.Programski okvir za automatizirano ispitivanje Web aplikacija se naziva WSAT – WebSecurity Assessment Tool.Korištenje modularnog sustava omogućava lakšu prilagodbu postupku ispitivanja ranjivosti Web aplikacija.
32
33 Seminarski rad Web tehnologije – razvoj web aplikacija
Gledano iz perspektive WSAT-a, postupak ispitivanja ranjivosti Web aplikacije prolazi kroz sljedeće faze:11
- prikupljanja informacija,- određivanje vrste i Web aplikacije - ispitivanje poznatih ranjivosti i analiza uspješnosti napada.
WSAT se sastoji od sljedećih modula:- modul za prikupljanje informacija ili Crawler modul,- modul za određivanje vrste i verzije Web aplikacije ili Fingerprint modul i- modul za otkrivanje ranjivosti ili Exploit modul.
Modul za prikupljanje informacija je zadužen komunikaciju i prikupljanje informacija izWeb aplikacije.Modul za određivanje vrste Web aplikacije, na temelju informacija dobivenih od modula za prikupljanje informacija, utvrđuje vrstu i verziju Web aplikacije.Modul za otkrivanje ranjivosti, nakon otkrivanja vrste i verzije Web aplikacija, pregledava svoju XML bazu ranjivosti kako bi pronašao već poznatu ranjivost za prethodno otkrivenu vrstu i verziju Web aplikacije.
11 http://www.linkovi.net
33
34 Seminarski rad Web tehnologije – razvoj web aplikacija
ZAKLJUČAK
Web aplikacija je aplikacija kojoj se pristupa putem web-a koristeći Internet ili Intranet mrežu.Problem razvoja Web aplikacija može se rješiti metodološkom i tehnološkom podrškom za svaku fazu procesa.
Svi smo bili svjedoci korjenitih promjena koje su potresale web u zadnjih 10 godina. Do prije desetak godina sajt je bio jedan direktorijum na nekom serveru u kome su se nalazili međusobno povezani dokumenti. Nikakve dinamike među njima nije bilo. Kako se web razvijao polako se počela ukazivati potreba za moćnijim riješenjem, koje će unjeti više dinamike i olakšati razvoj i održavanje web sajtova.
Tako su nastali dinamički sajtovi iza kojih stoje web aplikacije kakve su danas najčešće sreću. Nastali su portal sistemi, sistemi za upravljanje sadržajem, alati za upravljanje projektima, e-banking rešenja i mnoge druge manje ili više kompleksne aplikacije. Ono što je developerima donedavno nedostajalo je mogućnost direktnog odgovora na korisnikov zahtjev bez potrebe za ponovnim učitavanjem kompletne stranice. Zahvaljujući današnjim web aplikacija a prije svega Ajax konceptu 3 developeri su napokon dobili tu mogućnost.
Ako se u obzir uzmu sve činjenice budućnost web aplikacija čini se svijetlom, posebno kada poslovni korisnici uvide sve prednosti koje one donose (pojednostavljeno održavanje, platformska nezavisnost i dr.). Web aplikacije će postajati sve sličnije desktop aplikacijama. Naravno, neke desktop aplikacije nikada neće biti zamenjene web aplikacijama (editori fotografija, razvojna okruženja i tako dalje), ali sistemi za kolaboraciju i upravljanje projektima, skladišta fotografija, sistemi za upravljanje dokumentima i sadržajem, webmail servisi itd. – to su savršena mjesta gdje web aplikacije već danas predstavljaju provjerena i pouzdana riješenje.
34
35 Seminarski rad Web tehnologije – razvoj web aplikacija
LITERATURA
Internet stranice:
- http://www.webmajstori.net- http://www.webapplist.com- http://www.sitepoint.com- http://java.sun.com- http://www.linkovi.net- http://www.w3schools.com- http://www.w3.org- http://www.os-umag.hr- http://www.os-zakanje.skole.hr- http://www.html.net- http://www.html-indexer.com- http://www.php.net- http://pear.php.net- http://oliver.efos.hr- http://www.w3.org- http://www.w3schools.com/XML/xml_xsl.asp- http://www.asp.net- http://aspjavascript.com- http://www.asp.net/ajax- http://www.ajax.org- http://www.java.com- http://java.sun.com
35