Summary

This document appears to be an outline of topics for a computer science exam or lecture. It covers various aspects of web security, including concepts such as HTTP methods, network security, and web technologies. The document details important ideas and concepts relevant to studying network security, including essential concepts like HTTPS, SSL, and CSRF.

Full Transcript

DSR 2 Kolokvij. - Spletna varnost: - Model spletne varnosti - Spletne ranljivosti i napadi - HTTPS, TLS, digitalna potrdila - Overjanje uporabnikov in upravljanje seje - Cilj spletne varnosti - Varno brskanje po spletu - Možnost obiska spletnega mesta...

DSR 2 Kolokvij. - Spletna varnost: - Model spletne varnosti - Spletne ranljivosti i napadi - HTTPS, TLS, digitalna potrdila - Overjanje uporabnikov in upravljanje seje - Cilj spletne varnosti - Varno brskanje po spletu - Možnost obiska spletnega mesta brez škode - Poudarjanje varnosti spletnih aplikacij - HTTP metode - Get naj ne bi spreminjal stanja strežnika - Stari brskalniki ne podpirajo PUT, PATCH, DELETE - Večina zahtev s stranskim učinkom je danes POST - Metoda se skriva v glavi ali telesu zahteva - HTTP in spletne strani - Ko naložimo spletno mesto, naš brskalnik pošlje zahtevo GET na to spletno mesto - Nalaganje virov - Po parsing strani HTML brskalnik zahteva tudi neke dodatne vire - Zunanji viri - Nobenih omejitev ni, kam se lahko naložijo viri, kot so slike - Nič ne preprečuje, da se vključijo slike iz druge domene - (i)frames - Nalaganja posameznih virov oz. druga spletna mesta v svojem oknu - Frame: toga vidna pregrada - Iframe: plavajoči vrstni okvir(inline frame) - Javascript - Skripta ki nam ponudija spletno mesto, ki se izvaja v brskalniku - Lahko izvaja dodatne spletne zahteve, manipulira s stranjo, bere podatke brskalnika, lokalno strojno opremo\... - DOM -- Document Object Model - JS lahko bere in spreminja strani z interakcijo z DOMa - Objektno usmerjen vmesnik za branje / pisanje - Osnovni model izvajanja - Vsako okno brskalnika - Naloži vsebino korenske strani - Razčleni HTML in zaženi JS - Pridobi pod-vire kot so CSS, slike, JS, iframes - Se odziva na dogodke - Piškotki so tudi vedno poslani - Piškotki HttpOnly - API Document.cookie preprečimo dostop do piškotkov - Varni piškotki - Tisti ki imajo atribut Secure - Varni piškotek se strežniku pošlje samo s šifrirano zahtevo prek protokola HTTPS - HTTP / HTTPS - Varnostni protokoli - TLS - SSL - TLS Transport Layer Security - Osnova spletne varnost - SSL Secure Sockets Layer - TLS je naslednik SSL - Kriptografski protokol - Varna komunikacija preko omrežij - HTTPS povsod - Ne drži: - Kriptografija upočasnuje spletne strežnike - Določeni ponudniki oglasov ne podpirajo HTTPS - Ni zdrižljiva z virtualnim gostovanjem(virtual hosting) - Od julija 2018 Chrome označuje strani HTTP ko nevarne - Mešana vsebina: HTTP in HTTPS - Stran se naloži preko HTTPS, a deli se prenašajo preko HTTP - Možnost ugrabljanja seje - Problemi s sejami - Predvidljivi žetoni - Sejni žetoni morajo biti nepredviljivi - Uporaba uveljavljenih metod za generiranje - Uporaba ogrodij in funkcij - Kraja sej - Mešanje HTTP in HTTPS vsebine - XSS za krajo sej - SOP Same Origin Policy - Izvor A lahko dostopa do DOM izvora B, če se ujemata v: shema, domena, vrata - Varnost piškotkov - Uporaba: - Overjanje uporabnika -- user authentication - Personalizacija - Sledenje uporabnikom - Izvor je definiran kot pat domain, path - Varni piškoti -- secure - Omogoča zaupnost pred napadalci - Brskalnik bo vrnil piškotek samo preko HTTPS - Možno spremenite varne piškotke preko HTTP - httpOnly piškoti - Piškotek poslan preko HTTP(s), vendar ni dostopen prek skript - Ne prepreči groženj večine ostalih XSS hroščev - Seje - Zaporedje zahtev in odgovorov iz enega brskalnika na eno ali več spletnih mest - Upravljanje seje: enkrat se pooblasti uporabnika - Shranjevanje sejnih žetonov: - Brskalniški piškotek - Težava: brskalnik pošlje piškotek z vsako zahtevo, tudi kadar naj ne bi - Vgraditi v vse URL povezave - Težava: razkrivanje žetona prek glave HTTP Referer - V skritih poljih obrazcev - Težava: ne deluje pri dolgotrajnih sejah - Najboljša rešitev: kombinacija vsega naštetega - CSRF Cross Site Request Forgery - Vrsta spletnega napada, pri katerem napadalec izkotisti zaupanje, ki ga ima spletna aplikacija v brskalnik uporabnika. Napadalec lahko uporabnika prisili, da izvede nezaželene akcije na spletne strani, na katero je prijavljen, brez njegovega vedenja- - Za zaščito pred CSRF napadi se uporabljajo naslednje metode: - CSRF žetoni, vsaka zahteva vključuje edinstven žeton, ki ga preveri strežnik - Preverjanje referja, strežnik preveri, ali zahteva prihaja iz pričakovane strani - SameSite piškoti, piškoti so nastavljeni tako, da se pošiljajo samo, če zahteva prihaja iz iste domene - Proces odjave - Spletna mesta morajo zagotavljati funkcijo odjave - Spletno mesto mora prikazati vse naprave, ki so trenutne prijavljene v uporabniški račun - Preverjanje gesel - Sistem mora preveriti gesla, ki jih podajo uporabniki, torej mora biti nekje shranjena - Gesla nikoli ne smejo biti shranjena v navadnem besedilu - Zgoščena gesla - Uporabimo kriptografske zgoščevalne funkcije - Industrijski standardi za varno shranjevanje gesel - Zgoščcena - Sol / Poper in zgostitev - Namenske zgoščevalne funkcije - Vsako zgoščeno geslo dodamo unikatno vrednost "sol" pred zgoščevanjo - Razbijanje zgoščenih gesel - Shranjena gesla naj bodo vedno soljena - Težava je da dandanes je mogoče kriptografske zgoščevalne vrednosti izračunati zelo hitro - Utrjevanje soljenih gesel - Težava: tipične zgoščevalne funckije se izvajajo prehitro - Rešitev: uporaba namenskih zgoščevalnih funkcij, ki se izvajajo počasi - SQL injection - Ranljivost dinamične spletne aplikacije, kjer lahko napadalec spremeni SQL stavke v aplikaciji za upravljanje podatkov v podatkovni bazi. Napadalec lahko pridobi podatke drugih uporabnikov ali druge podatke, do katerih ima aplikacija dostop - Preprečevanje napadov: - Nikoli ne zaupamo uporabniškem vnosu - Obstajajo orodja za varno posredovanje uporabnikovih vnosov v PB: - Parametriziran SQL - ORM(Object Relational Mapper) -- uporablja pred-pripravljeni SQL interno - Parametriziran SQL omogoča ločeno pošiljanje poizvedb in argumentov strežniku - XSS Cross Site Scripting - Napad se zgodi, ko aplikacija prejme nezaupljive podatke in jih pošlje v spletni brskalnik brez ustreznega preverjanja - Tipi XSS napadov - Napadalec lahko vrine skriptno kodo na strani, ki jih ustvari spletna aplikacija - Dva tipa - Odsevni XSS(reflected) - Napadalčeva skripta se uporabniku prikaže kot del žrtvene spletne strani - Shranjen XSS(stored) - Napadalec zlonamerne kodo shrani v vir, ki ga upravlja spletna aplikacija - CSP Content Security Policy - Omogoča preprečevanje napadov XSS s pomočjo belih seznamov -- seznam zaupanja vrednih virov - Brskalnik bo izvrševal samo skripte iz domen s sezanama dovoljenih - HTML injection - Omogoča vstavljanje določenih HTML značk - Zelo podoben XSS, ki omogoča tudi zagon JS skripte - Ugrabitev seje - Napadalec čaka da se uporabnik prijavi - Nato pa ukrade njegov sejin žeton - FireSheep, ugrabi HTTP žetone preko WiFi(Firefox extention) - Rešitev: vedno pošiljamo sejne žetone preko HTTPS - Sejni žetoni morajo biti napadalcu nepredviljivi, torej uporabljamo ogrodje - Povzetek - Varnost sejnih žetonov - Možnosti: piškoti, skrita polja obrazca, URL parametri - Piškotki sami po sebi niso varni - Sejni žetoni morajo biti nepredvidljivi - Zagotovimo da bo odjava in časovna omejitev razveljavila sejo tudi na strežniku - Pomanjkljiv nadzor dostopa (Broken Access control) - Pazite na dostopne pravice - Dostop do virov - Dostop samo do virov, do katerih nekdo potrebuje dostop - Kako se zavarovati: - Privzeta zavrnitev dostopa - Ustrezno načrtovanje nadzora dostopa - Penetracijsko testiranje / ročno testiranje - Razkrivanje občutljiv podatkov - Ustrezno varovanje podatkov - Finančni podatki, osebni podatki, zdravstveni podatki, proverilnice - Kako se zavarovati: - Ne shranjujemo podatke ki ne potrebujemo - Ustrezno šifriranje (TLS) - Podatke razvrstimo glede na pomembnost / občutljivost - Nepravilne varnostne nastavitve (Secutity Misconfiguration) - Zelo pogosta napaka - Nepopolnoma / nepravilna implementacija kontrol - Kako se zavarovati: - Ročno testiranje - Nameščanje / vključevanje nujnih komponent - Bodimo pazljivi pri oblačnih storitvah - Uporaba komponent z znanimi ranljivostmi - Seznam uporabljenih komponent - Uporaba preverjenih komponent iz preverjenih virov - Onemogočanje nepotrebnih možnosti - Spremljanje seznam obveščanja o ranljivostih - Nepopolno overjanje (Broken authentication) - Nezadostno overjanje in pomanjkljivo upravljanje sej - Slaba ali pomanjkljivo upravljanje z gesli - Kako se zavarovati: - Uporaba več faznega overjanja - Ustrezna politika gesel - Ustrezno upravljanje prijav - Upravljanje sej na strežniški strani - Ustrezen čas poteka prijave - Nezadostno beleženje in spremljanje - Beleženje -- dnevniki, dogajanje - Spremljanje (monitoring) - Kdaj beležiti? - Napake pri prijavi - Brisanja podatkov - Sprememba gesel - Funkcije PHP za preverjanje vnosov: - Odstranjevanje nepotrebnih znakov - trim(\$podatki); - odstranjevanje poševnic iz vnosa: - stripslashes(\$data); - odstranjevanje HTML oznak iz vnosa: - htmlspecialchars(\$data); - odstranjevanje posebnih znakov iz vnosa: - mysql\_real\_escape\_string(\$data); - Varnostno relevantne nastavitne: - Display\_errors = On ali Off - Druge uporabne nastavitve: - Max\_execution\_time = int - Memory\_limit = int - Open\_basedir = string - PHP in kriptografija - Uporaba zgostitev - \$izvlecek = sha1 (\$niz) - Varnost in MySQL - Problem -- razkritje podatkov za povezavo na PB - SQL vrivanje -- še nekaj protiukrepov - Filtriranje podatkov - Uporabljajte narekovanje -- enojni narekovanja okoli vseh vrednosti - Uporaba ustreznih funckij - PHPMailer je knjižnica za varno in enostavno pošiljane e-pošte prek kode PHP iz spletnega strežnika. Za pošiljanje potrebujemo SMTP protokol. - jQuery je JS knjižnica po principu: piši manj, naredi več - razvita je bila za hitrejši razvoj spletnih strani - \$ je bližnjica za dostop do jQuery - Sinhrona komunikacija: uporabnik mora počakati, da se naloži nova stran - Tipičen vzorec komunikacija(click, wait, refresh) - Spletne aplikacije in AJAX - Spletna aplikacija: dinamična spletna stran, ki posnema delovanje namizne aplikacije - Kontinuirana uporabniška izkušnja - AJAX: Asynchronous JavaScript and XML - Ni programski jezik - Koncept uporabe JS in drugih tehnologij - Nalaganje s strežnika v ozadju - Dinamično posodabljanje spletne strani, brez osveževanj - AJAX -- asinhrona komunikacija - Ajax model spletne aplikacije: - Rezultati spreminjajo AJAX zahteve spremenijo le del spletne strani - JS -- podatki, formatiranje in oblikovanje - Prednosti AJAX - Boljša interaktivnost / odzivnost - Uporavniško bolj prijazna spletna stran - Manjša količkina povezav do splet. Strežnika - Manjša poraba pasovne širine -- selektivno nalaganje - Slabosti AJAX - Neuporabnost gumbov refresh in back - Onemogočeni bookmarks - Obvezna uporaba JS - Zamik omrežja lahko vpliva na uporabnost - Tipični scenariji uporabe - Autocomplete - Uporaba v specifičnih aplikacij (hipno sporočanje) - Posodabljanje v realnem času (športni rezultati) - Hipna validacija obrazcev - Samodejno shranjevanje uporabniških podatkov - AJAX komponente - JS - Klic funkcije, lahko uporabljamo jQuery - DOM - API za dostop do elementov HTMl dokumenta - CSS - Izgled strani - XMLHttpRequest - JS objekt za asinhrono interakcijo s strežnikom - Objekt XMLHttpRequest - API ki ga lahko uporabi JS - Prenos in manipulacija podatkov v določenem formatu in prenos na ali iz strani spletne strežnika s pomočjo protokola HTTP - Povezave med odjemalcev in strežnikom - Uporabi lahko tudi druge formate razen XML, lahko JSON ali celo gole tekstualne podatke - Izvede naslednje operacije: - Pošilja podatke s strani odjemalca - Prejema podatke s strani strežnika - Posodobi spletni stran brez ponovnega nalaganja - Uporaba AJAXa je enostavnejša z APIjem jQuery, ki deluje na več brskalnikih - jQuery ponuja več metod za podporo Ajax funkcionalnostim - Ajax je namenjem nalaganju podatkov v ozadju in prikazu le-teh na spletni strani, brez ponovnega nalaganja strani - jQuery in AJAX metode: - get: pridobi podatke iz strežnika - post: pridobi podatke iz strežnika - load: pridobi podatke iz strežnika in jih prikaže v HTML elementu - getJSON: pridobi podatke iz strežnika v JSON format - ajax: izvede asinhrono AJAX zahtevo - jQuery in AJAX parametri - url: naslov spletne storitve - method: HTTP metoda za zahtevo - data: podatki, ki jih pošiljamo na strežnik - dataType: tip podatkov, ki jih pričakujemo od strežnika - success: callback funkcija, ki se izvede ob neuspešni zahteve - xhr: vsebuje XMLHttpRequest objekt - Osnovna oblika Ajax klica: metoda \$.ajax() - Vse jQuery AJAX metode jo uporabljajo. To uporabimo, ko ne moremo uporabiti drugih metod. To uporabimo ko ne moremo uporabiti drugih metod - API -- Application Programming Interface - API je način medsebojnega komuniciranja dveh ali več rečunalniških programov - Spletni vmesnik je za ljudi, API je za računalnike - JSON je format za izmenjavo podatkov - JSON je besedilni format, ki je popolnoma neodvisen od jezika, vendar uporablja konvencije, ki jih poznajo programerji družice C\.... - JSON je idealen jezik za izmenjavo podatkov - Je zapisan v obliku ključ-vrednost parov - Odjemalec od strežnika zahteva podatke, nato pa strežnik odjemalcu pošilje odgovor - Podatke ki jih strežnik vrne kot odgovor na zahtevo odjemalca, v obliki JSON ali XML - Težava je da moramo za pridobitev zahtevanih podatkov uporabiti veliko metod, uporaba teh metod za pridobivanje podatkov pa postane precej okorna, ko so podatki kompleksni - Vmesnik REST poudarja enotne vmesnike, neodvisno uvajanje komponent, skalabilnost interakcij med njimi - Vmesnik REST API, ustvarja objekt in nato odjemalcu v odgovor pošilje vrednosti objekta - REST -- Representational State Transfer - REST je arhitekturna zasnova za spletne storitve, ki temelji na HTTP protokolu - Dva ključna pojma: - Odjemalec -- odjemalec je (oseba) programska oprema, ki uporablja API - Vir (resource) -- vir je lahko kateri koli predmet, o katerem lahko API zagotovi informacije - RESTful je implementacija REST - Spletna aplikacija RESTful razkriva podatke o sebi v obliki podatkov o svojih virih - Vendar mora upoštevati vrstno omejitev - REST principi: - Enoten Vmesnik - Rezultat je da so zahteve različnih odjemalcev videti enako, ne glede na to kdo ali kakšen je odjemalec - Ima 4 dele: - Identifikacija vira - Manipulacija z viri z uporabo predstavitev - Samoopisna sporočila - Hipermediji kot gonilo stanja aplikacije - Ločitev odjemalca in strežnika - Odjemalec in strežnik sta razvita in delujeta neodvisno, interakcija med njima pa poteka le v obliku - Zahtevkov - Odgovorov - Brezstanjskost (stateless) - Strežnik ne zapomni ničesar o uporabniku, ki uporablja API - Vsaka posamezna zahteva vsebuje vse infromacije, ki jih strežnik potrebuje za izvedbo zahteve in vrnitev odgovora, ne glede na druge zahteve istega uporabnika API - Večplastnost sistema (layered system) - Med odjemalcem in strežnikom je lahko vmes več strežnikov - Ti strežniki lahko zagotavljajo varnostno raven, raven predpomnilnika, raven izravnave obremenitve ali druge funkcije - Ne smejo vplivati na zahtevo ali odgovor - Odjemalcu ni pomembno, koliko plasti, če sploh, je med njim in dejanskim strežnikom, ki odgovarja na zahtevo - Moznost predpomnjena (cacheable) - Podatki, ki jih pošilja strežnik, vsebujejo informacije o tem, ali jih je mogoče shraniti v predpomnilnik ali ne - Če je podatke mogoče shraniti v predpomnilnik, lahko vsebujejo številko različice - Odjemalec mora tudi vedeti, ali je trenutna različica podatkov potekla - Koda na zahtevo (code-on-demand) - Odjemalec lahko od strežnika zahteva kodo, nato pa bo odgovor strežnika vseboval določeno kodo, običajno v obliki skripte, če je odgovor v obliki HTML - Odjemalec lahko nato to kodo izvede - cURL -- Client URL library

Use Quizgecko on...
Browser
Browser