Chrynn / Filmator

Filmová databáze
Other
1 stars 0 forks source link

#12 Dokončení login sekce #13

Closed Chrynn closed 2 years ago

Chrynn commented 2 years ago

product manager

Popis

Motivace

Zadání

Chrynn commented 2 years ago

developer

Řešení:

Chrynn commented 2 years ago

developer

Permanent Login

Postup

Pokud je checkbox zaškrtnutý, tak po ověření hesla:

  1. Vytvoř selector a validator, dvě náhodné hodnoty, selector unikátní, validator alespoň 16 náhodných bajtů
  2. Do databáze do tabulky s login tokeny si ulož selector, sha256(validator), user id a čas vytvoření (nebo expirace)
  3. Do cookie pošli selector+validator, můžeš to oddělit třeba dvojtečkou, lomítkem, nebo použít dvě různý cookie Když přijde požadavek s permanent login cookie, tak:
  4. Podle dvojtečky apod. si vytáhni selector a validator
  5. Podle selectoru si z tabulky permanent login tokenů vytáhni hash validatoru
  6. Spočítej hash hodnoty z cookie a porovnej ji pomocí hash_equals() s hashem z bodu 6
  7. Pokud se rovnají, tak přihlaš uživatele s id, které jsi také vytáhl podle selectoru.

Výhody způsobu řešení

Tenhle způsob řeší spoustu potenciálních problémů (neleakuje interní id, porovnává řetězce v konstantním čase), ..., včetně toho, že když se někdo dostane k databázi např. pomocí SQL injection, tak nezíská tokeny, kterými by se mohl přihlásit, protože v databázi jsou uložené jen hashe, které nejdou rozumně cracknout.

Přihlášení

Pro přihlášení uživatele není třeba heslo, stačí do metody Nette\Security\User::login() poslat objekt Identity, viz např.

Chrynn commented 2 years ago

project manager

Děkuji, proveďme @developer

Chrynn commented 2 years ago

developer

Prosím o test @tester

Chrynn commented 2 years ago

tester

Vypadá v poho až na jednu věc @developer

Chrynn commented 2 years ago

developer

Díky, může NO @projectManager

Chrynn commented 2 years ago

project manager

Dejme NO @developer

Chrynn commented 2 years ago

developer

NO @projectManager

Chrynn commented 2 years ago

project manager

Díky, zavírám