Namų darbas — slapukas, maiša, apsaugos
Padaryk savą.
-
Pažiūrėk į slapuką naršyklėje. Užsiregistruok, tada atsidaryk DevTools → Application → Cookies. Rask
signflow_session:HttpOnlypažymėta (taddocument.cookiekonsolėje jo nerodys — pabandyk),SameSiteyraLax. Tai žetonas; serveris turi tik jo maišą. -
Įrodyk maišos-diske teiginį. Slapuko reikšmė ir
token_hashstulpelis yra skirtingos eilutės. Nukopijuok slapuko reikšmę, tadaSELECT token_hash FROM sessions;— jos nesutampa, nes saugoma yraSHA-256(slapuko reikšmė). Pavogta duomenų bazės kopija neturi jokių veikiančių sesijų. -
Pataikyk į kiekvieną apsaugą. Registruok tą patį el. paštą du kartus → „already registered". Pateik nesutampančius slaptažodžius → „do not match". Bandyk 3 simbolių slaptažodį → ilgio klaida. Kiekviena — šaka
Register; rask eilutę, sukūrusią kiekvieną pranešimą. -
Ištrink sesiją ranka.
DELETE FROM sessions;, tada perkrauk. Kol kas nieko matomo nepasikeičia — nes niekas neskaito sesijos slapuko į „prisijungęs", kol neatėjo kita pamoka. Bet ką tik ranka padarei būtent tai, ką atsijungimas padarys viena užklausa.
Kur einam toliau. Gali užsiregistruoti ir turi gyvą sesiją — bet programa į ją nereaguoja: nėra „prisijungęs" antraštės, apsaugoto puslapio, būdo vėl prisijungti ar atsijungti. 5 pamoka prideda du middleware, kurie sesijas paverčia tikromis: LoadUser (kiekvienoje užklausoje paverčia slapuką į esamą vartotoją) ir RequireAuth (saugo puslapius, kuriems reikia prisijungimo). Plius prisijungimas, atsijungimas — vienas DELETE, tai, ko JWT negali — ir paskyrų nuskaitymo apsaugos, neleidžiančios įsilaužėliui sužinoti, kurie el. paštai užregistruoti.