CodeWilderness
Client-Server model
Singing Parrot as author
Radošević Dejan

Osnove Web Razvoja

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:

  1. Klijent - uređaj ili softver koji zahtijeva usluge ili resurse od servera (šalje zahtjeve).
  2. 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:

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:

  1. Klijent (npr. web pregledač) šalje HTTP zahtjev serveru kako bi dobio određene resurse (npr. HTML stranicu, slike, skripte).
  2. Server prima HTTP zahtjev, obrađuje ga i generiše odgovor koji će poslati nazad klijentu.
  3. 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.

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:

Kako Se Koristi API?

Korišćenje API-ja uključuje nekoliko ključnih koraka:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  3. Simple Mail Transfer Protocol je protokol koji se koristi za slanje elektronske pošte putem interneta.

  4. Representational State Transfer

  5. Simple Object Access Protocol

  6. Eskejpovanje korisničkog unosa se odnosi na proces konverzije specijalnih karaktera u bezbjedne karaktere, kako bi se spriječilo izvršavanje zlonamjernog koda.