SessionStorage ja turvalisuse põhitõed

3.1 OpenID, OAuth ja JSON Web Token (JWT)

OpenID

OpenID on autentimisprotokoll, mis suunab kasutaja usaldatud teenusepakkuja juurde (nt Google). Kui kasutaja seal sisse logib, kinnitab teenusepakkuja tema isiku ning veebisait saab usaldusväärse kinnituse ilma eraldi konto loomata.

OAuth

OAuth on autoriseerimise standard, mis annab kolmandatele rakendustele ligipääsu tokeni kujul. Token väljastatakse kasutaja nõusolekul ja seda kasutatakse kaitstud ressursside (nt kontaktid, profiiliandmed) kättesaamiseks.
👉 OAuth väljastab access tokeni.

JWT (JSON Web Token)

JWT on kompaktne viis JSON-objektina infot turvaliselt edasi anda. Koosneb kolmest osast:

Kontrollvastused:
OAuth puhul väljastatakse: access token.
Apple ID-ga sisselogimiseks kasuta OpenID Connect / OAuth 2.0.
JWT koosneb: header, payload, signature.

3.2 HTTP autentimise päis ja küpsised. Atribuudid: Secure, HttpOnly, SameSite

HTTP autentimine

Lihtsaim variant: brauser lisab päisesse Authorization: Basic <credentials> (kasutajanimi + parool base64-kodeeritult). Kui see puudub, saadab server vastuseks 401 Unauthorized koos WWW-Authenticate päisega.

Küpsised (cookies)

Server saadab brauserile väikese andmepaki, mida brauser salvestab ja lisab edaspidi sama domeeni päringutele. Kasutatakse sessioonide haldamiseks, isikupärastamiseks ning jälgimiseks.

Olulised atribuudid

Kontrollvastused:
Küpsiseid kasutatakse: sessioonide haldamiseks, isikupärastamiseks, jälgimiseks.
Secure atribuut takistab küpsise edastamist HTTP kaudu.
SameSite väärtused on: Strict, Lax, None.

3.3 Sessioonid ja tokenite aegumine

Sessioonid

Kuna HTTP on olekuta, seotakse kasutaja päringud sessiooni kaudu. Server hoiab andmeid, brauseril on vaid sessiooni ID.

Aegumine

Kontrollvastused:
Sessioonid luuakse selleks, et siduda mitu päringut ühe kasutajaga.
Sessiooni aegumine aitab vältida vana sessiooni väärkasutust.
Refresh token võimaldab hankida uue access tokeni ilma uuesti sisselogimata.

3.5 HTTPS ja Let’s Encrypt sertifikaadid

HTTPS / TLS

HTTPS tähendab HTTP kasutamist TLS-i (SSL-i uuemat versiooni) üle. Tagab krüpteeritud ühenduse ja andmete konfidentsiaalsuse. Brauseris näitab lukusümbol turvalist ühendust.

Sertifikaadid

TLS-sertifikaat kinnitab domeeni ja avaliku võtme seose. Kui sertifikaat ei ole usaldusväärsest allikast (CA), kuvab brauser hoiatusi.

Let’s Encrypt

Tasuta sertifitseerimiskeskus, mis väljastab ja uuendab sertifikaate automaatselt (kasutades ACME protokolli). Sertifikaadi saab paigaldada käsurea tööriistaga (nt certbot) või hostingu kaudu.

Kontrollvastused:
HTTPS on protokoll, mis krüpteerib ühenduse TLS-iga.
Usaldusväärne sertifikaat on vajalik selleks, et brauserid usaldaksid ühendust ja ei kuvaks hoiatusi.

3.6 CORS, CSRF, XSS, SQL Injection, Forced browsing

CORS (Cross-Origin Resource Sharing)

Määrab, millised domeenid tohivad API-le ligi pääseda. Vale seadistus (nt '*') võimaldab igal domeenil ligi pääseda.

Kaitsemeetmed:

Muud ründed ja kaitse

Kontrollvastused:
CORS on mehhanism, mis võimaldab turvaliselt kasutada ressursse teiselt domeenilt.
CORS-i rünnakuid vältida saab, seadistades poliitika ainult usaldusväärsetele domeenidele.

3.7 Pentestimise tööriistad (WPScan, OWASP ZAP)

Penetratsioonitestimine

Simuleeritud rünnak turvaaukude leidmiseks enne tõelisi ründajaid. Etapid: uurimine, haavatavuste kasutamine, aruandlus ja soovitused.

Tööriistad

Oluline: Pentest võib koormata süsteemi või põhjustada vigu, seega testi alati eraldi keskkonnas.

Kontrollvastused:
Pentest on vajalik turvanõrkuste avastamiseks enne ründajaid.
Kasutatakse tööriistu nagu WPScan, OWASP ZAP jt.
Pentest võib mõjutada veebisaiti, seega tuleb see hoolikalt planeerida.

sessionStorage