Web razvoj kao ključni dio savremenog digitalnog svijeta, omogućava kreiranje dinamičnih i interaktivnih web aplikacija koje pružaju korisnicima raznovrsna iskustva. Ovaj članak će istražiti osnove web razvoja, fokusirajući se na ključne koncepte kao što su client-server model, API-ji, sigurnost na frontendu, kao i proces komunikacije između korisnika i servera. Kroz razumijevanje ovih osnovnih principa, čitaoci će steći uvid u ključne aspekte web razvoja i značajne prakse koje se primjenjuju u ovom dinamičnom polju tehnologije.
Client Server Model
Client-server model je dizajn računarskog sistema koji ilustruje odnos između dva ili više računara, gdje klijent uređaji zahtijevaju i primaju usluge ili resurse od centralizovanog server uređaja. Ovaj model opisuje specifičan način na koji uređaji pristupaju informacijama koje se čuvaju na serverima.
Dakle dvije osnovne komponente ovog modela su:
- Klijent - uređaj ili softver koji zahtijeva usluge ili resurse od servera (šalje zahtjeve).
- Server - uređaj ili softver koji pruža usluge klijentu. Takođe, server može biti i kljent, recimo kada šalje zahtjev bazi podataka.
Šta pruža Client-Server Model:
- Centralizaciju: centralizovan server omogućava efikasno skladištenje i upravljanje resursima.
- Sigurnost: još jedan od benefita centralizovanog servera, jer omogućava implementaciju sigurnosnih mehanizama i kontrole pristupa.
- Skalabilnost: serveri se mogu nadograditi i proširiti ukoliko rastući broj klijenata to zahtjeva.
Implementacija Client-Server Modela se najčešće obavljaju primjenom mrežnih protokola poput: HTTP1, FTP2, SMTP3 i drugih.
Komunikacija između klijenta i servera
Komunikacija između klijenta i servera je ključni dio arhitekture web aplikacija, a HTTP igra centralnu ulogu u ovom procesu.
HTTP je protokol koji se koristi za prenos hipertekstualnih dokumenata preko World Wide Web-a. Osnovna svrha HTTP-a je omogućavanje komunikacije između klijenta i servera putem zahtjeva i odgovora.
Proces komunikacije između klijenta i servera putem HTTP-a obuhvata nekoliko ključnih koraka:
- Klijent (npr. web pregledač) šalje HTTP zahtjev serveru kako bi dobio određene resurse (npr. HTML stranicu, slike, skripte).
- Server prima HTTP zahtjev, obrađuje ga i generiše odgovor koji će poslati nazad klijentu.
- Server šalje HTTP odgovor klijentu, koji sadrži tražene resurse ili informacije o statusu zahtjeva.
HTTP zahtjev i odgovor imaju određenu strukturu koja omogućava jasnu razmjenu podataka između klijenta i servera.
- Struktura HTTP zahtjeva obuhvata metod (npr. GET, POST, PUT, DELETE), URL resurse, zaglavlja (headers) i opcionalno tijelo zahtjeva.
- Struktura HTTP odgovora obuhvata statusni kod, zaglavlja i tijelo odgovora.
API
API (Application Programming Interface) je skup definisanih pravila i protokola koji omogućavaju softverskim aplikacijama da komuniciraju i razmjenjuju podatke međusobno.
Postoje različite vrste API-ja, uključujući:
-
Web API: Web API-ji omogućavaju komunikaciju između različitih softverskih sistema putem HTTP-a. Oni se često koriste za pristupanje web servisima i razmjenu podataka putem interneta.
-
RESTful API: RESTful API-ji su posebna vrsta web API-ja koja prati REST4 princip arhitekture. Oni koriste HTTP metode (npr. GET, POST, PUT, DELETE) za manipulaciju resursima i omogućavaju efikasnu razmjenu podataka.
-
SOAP API: SOAP5 API-ji su zasnovani na XML-u i koriste kompleksne poruke za komunikaciju između softverskih sistema. Često su zastupljene u enterprise okruženjima za integraciju različitih aplikacija.
-
GraphQL API: GraphQL je moderni upitni jezik i izvršni okvir koji omogućava efikasno upravljanje podacima putem API-ja. GraphQL API-ji pružaju fleksibilnost u definisanju upita i dobijanju tačno onih podataka koji su potrebni.
Kako Se Koristi API?
Korišćenje API-ja uključuje nekoliko ključnih koraka:
-
Registrovanje i dobijanje pristupnih ključeva. Mnogi API-ji zahtijevaju pristupne ključeve ili tokene kako bi omogućili autorizovan pristup. Korisnici treba da se registruju i dobiju pristupne ključeve od provajdera API-ja.
-
Slanje zahtjeva. Korisnici mogu slati HTTP zahtjeve ka određenom API-ju, koristeći odgovarajuće metode i pridružene parametre za pristupanje resursima i izvršavanje određenih akcija.
-
Obrada odgovora. Nakon slanja zahtjeva, API će generisati odgovor koji sadrži tražene podatke ili informacije o izvršenju zahtjeva. Korisnici mogu obraditi odgovor i koristiti dobijene podatke u svojim aplikacijama.
Životni ciklus web stranice
Ovaj ciklus predstavlja proces koji se odvija kada korisnik zahtijeva određenu web stranicu putem web pregledača. Proces uključuje niz koraka, od slanja zahtjeva serveru do prikazivanja web stranice korisniku.
-
Slanje zahtjeva: Kada korisnik unese URL u web pregledač i pritisne “Enter”, web pregledač šalje HTTP zahtjev ka serveru koji čuva traženu web stranicu. Ovaj zahtjev sadrži informacije o resursima koje pregledač želi da preuzme, kao i dodatne metapodatke.
-
Obrada zahtjeva na serveru: Server prima HTTP zahtjev i obrađuje ga. Ovaj korak uključuje provjeru i autentifikaciju korisnika, čitanje podataka sa baze podataka, izvršavanje server-side skripti, ili bilo koje druge operacije koje su potrebne za pripremu odgovora.
-
Generisanje odgovora: Nakon obrade zahtjeva, server generiše HTTP odgovor koji sadrži HTML, CSS, JavaScript, slike i druge resurse potrebne za prikazivanje web stranice.
-
Slanje odgovora: Server šalje HTTP odgovor nazad ka web pregledaču koji je poslao zahtjev. Ovaj odgovor sadrži statusni kod, zaglavlje i tijelo odgovora koji sadrže tražene resurse.
-
Renderovanje stranice: Web pregledač prima HTTP odgovor i počinje proces renderovanja web stranice. Ovaj proces uključuje parsiranje HTML, izvršavanje JavaScript koda, primjenu CSS stilova i prikazivanje krajnjeg rezultata korisniku.
Sigurnost na Frontendu
Web sigurnost na frontendu je od suštinskog značaja za zaštitu korisnika od različitih prijetnji i napada prilikom korišćenja web aplikacija. Odnosi na zaštitu korisnika od različitih vrsta napada i prijetnji koje mogu nastati prilikom korišćenja web aplikacija. Ključni aspekti web sigurnosti na frontendu uključuju zaštitu od XSS (Cross-Site Scripting) napada, CSRF (Cross-Site Request Forgery) napada, bezbjednost sesija, zaštitu od SQL injection napada i upravljanje autentifikacijom i autorizacijom korisnika.
-
XSS zaštita: XSS napadi se dešavaju kada napadač ubaci zlonamjerni JavaScript kod u web stranicu, koji se zatim izvršava u pregledaču korisnika. Zaštita od XSS napada uključuje pravilno sanitizovanje i eskejpovanje6 korisničkog unosa, kao i korišćenje Content Security Policy (CSP) za ograničavanje izvršavanja skripti.
-
CSRF zaštita: CSRF napadi se dešavaju kada napadač izazove izvršavanje zlonamjernih akcija na web aplikaciji putem lažnih zahtjeva koji se izvršavaju u ime autentifikovanog korisnika. Zaštita od CSRF napada uključuje korišćenje CSRF tokena i provjeru referera kako bi se osiguralo da zahtjevi dolaze sa validnih izvora.
-
Bezbjednost sesija: Bezbjednost sesija je ključna zaštita koja se odnosi na upravljanje identitetom i autentifikacijom korisnika. Korišćenje sigurnih HTTP kolačića (cookies) sa odgovarajućim atributima kao što su Secure i HttpOnly, kao i implementacija sigurnih mehanizama autentifikacije (npr. JWT) su ključni aspekti bezbjednosti sesija.
-
Zaštita od SQL injection napada: SQL injection napadi se dešavaju kada napadač ubaci zlonamjerni SQL kod u formularima ili URL parametrima, što može dovesti do neovlašćenog pristupa ili modifikacije podataka u bazi podataka. Zaštita od SQL injection napada uključuje korišćenje parametrizovanih upita i sanitizaciju korisničkog unosa.
-
Upravljanje autentifikacijom i autorizacijom: Pravilno upravljanje autentifikacijom i autorizacijom korisnika je ključno za osiguranje pristupa samo ovlašćenim korisnicima i resursima. Korišćenje jakih lozinki, dvofaktorske autentifikacije, i pravilno upravljanje privilegijama su ključni aspekti upravljanja autentifikacijom i autorizacijom.
Footnotes
-
Hypertext Transfer Protocol je protokol koji se koristi za prenos podataka putem World Wide Web-a. To je osnovni protokol koji omogućava komunikaciju između web servera i web pregledača, kao i između različitih web servisa. ↩
-
File Transfer Protocol je protokol koji se koristi za prenos datoteka između računara putem mreže, posebno preko interneta. To je standardni protokol koji omogućava efikasan prenos datoteka između klijentskih i serverskih računara. ↩
-
Simple Mail Transfer Protocol je protokol koji se koristi za slanje elektronske pošte putem interneta. ↩
-
Representational State Transfer ↩
-
Simple Object Access Protocol ↩
-
Eskejpovanje korisničkog unosa se odnosi na proces konverzije specijalnih karaktera u bezbjedne karaktere, kako bi se spriječilo izvršavanje zlonamjernog koda. ↩