Funkcia Requesto

Bezpečný odkaz pre klienta — token, expirácia a regenerácia

Bezpečný odkaz pre klienta v Requesto nie je statický zdieľaný priečinok. Každá požiadavka má unikátny token — v databáze uložený iba ako SHA-256 hash, nie v čitateľnej podobe. Odkaz má expiráciu a pri citlivých udalostiach sa regeneruje nový token.

Bežný zdieľaný odkaz nemá expiráciu ani väzbu na požiadavku

Odkaz z e-mailu alebo cloudu často zostane aktívny navždy a môže sa preposlať ďalej. Bez väzby na konkrétnu požiadavku neviete, či klient uploaduje správne súbory, a po kompromitácii linku nemáte jednoduchý spôsob ho zrušiť.

Requesto generuje token cez generatePublicToken() a ukladá hashPublicToken() do poľa public_token_hash. Pri overení sa token porovná s hashom — pri úniku databázy nie je token priamo zneužiteľný.

Táto funkcia popisuje mechanizmus odkazu — nie celý bezpečnostný balík. Signed URL pre sťahovanie, RLS a private bucket sú doplnkové vrstvy popísané v sekcii /bezpecnost.

Pre koho je to určené

  • Profesionáli posielajúci citlivé dokumenty cez kontrolovaný kanál
  • Účtovníci a poradcovia nahrádzajúci e-mailové prílohy
  • Tímy s požiadavkou na obmedzenú platnosť prístupu
  • Firmy, ktoré nechcú verejné cloudové odkazy

Príklady z praxe

Odoslanie požiadavky s 30-dňovou expiráciou

Token má token_expires_at. Po uplynutí termínu klient odkazom nenahrá — musíte vygenerovať nový.

Regenerácia po zamietnutí dokumentu

Pri zamietnutí sa zavolá regeneratePublicLink() a klient dostane nový token v e-maile. Starý odkaz prestane fungovať.

Pripomienka s novým odkazom

Cron endpoint pri pripomienke regeneruje token pred odoslaním e-mailu — klient vždy dostane aktuálny funkčný link.

Odporúčaný postup

  1. Odoslanie požiadavky vygeneruje token

    Systém vytvorí náhodný token, uloží jeho hash a nastaví expiráciu. URL má tvar /request/{token}.

  2. Klient otvorí odkaz

    API overí token proti hashu a skontroluje expiráciu. Pri neplatnom tokene klient vidí chybovú hlášku, nie obsah požiadavky.

  3. Upload cez rovnaký token

    POST na /api/public/request/{token} prijme súbor len pri platnom tokene a aktívnom stave požiadavky.

  4. Regenerácia pri potrebe

    Po zamietnutí, pripomienke alebo bezpečnostnom incidente sa vygeneruje nový token a starý hash sa prepíše.

Najčastejšie chyby

  • Zdieľanie odkazu viacerým klientom

    Token je viazaný na jednu požiadavku jedného klienta. Pre iného klienta vytvorte samostatnú požiadavku s vlastným tokenom.

  • Ukladanie odkazu na verejné miesto

    Token v URL je tajomstvo. Nepublikujte ho na webe ani v skupinových chatoch — pošlite ho priamo klientovi.

  • Predpoklad, že odkaz je šifrovaný kanál

    HTTPS chráni prenos, ale samotný token v URL môže uniknúť cez históriu prehliadača. Pri citlivých dokumentoch nastavte rozumnú expiráciu.

Ako to rieši Requesto

Hash namiesto čitateľného tokenu v DB

V databáze je uložený SHA-256 hash. Overenie prebieha constant-time porovnaním — token nie je priamo čitateľný z DB.

Expirácia a blokovanie stavov

Po expirácii alebo pri stavoch cancelled/completed je upload zablokovaný. Klient nemôže meniť dokumenty po uzavretí.

Regenerácia bez ručnej práce

Pri zamietnutí a pripomienkach systém automaticky vytvorí nový token a odošle aktuálny odkaz klientovi.

Často kladené otázky

Je token v databáze uložený v čitateľnej podobe?

Nie. V poli public_token_hash je iba SHA-256 hash. Plný token poznáte len v momente generovania a v URL odoslanom klientovi.

Čo sa stane po expirácii odkazu?

Verejné API vráti chybu a upload nie je možný. Musíte regenerovať odkaz alebo vytvoriť novú požiadavku podľa stavu procesu.

Prestane fungovať starý odkaz po regenerácii?

Áno. Nový token prepíše hash v databáze. Predchádzajúci odkaz už neprejde overením.

Môže klient zmeniť token?

Nie. Token generuje server. Klient ho používa tak, ako ho dostane — nemá prístup k nastaveniam požiadavky.

Ako sa líši od /bezpecny-upload-dokumentov?

Produktová stránka opisuje celý bezpečný upload vrátane úložiska. Táto stránka sa zameriava na mechanizmus verejného odkazu a tokenu.

Loguje sa otvorenie odkazu?

Áno. Udalosť public_link_opened sa zapisuje do activity logu pri načítaní verejnej stránky požiadavky.

Súvisiace stránky

Pošlite klientovi bezpečný odkaz

Vytvorte zoznam požadovaných dokumentov, odošlite klientovi bezpečný odkaz a sledujte, čo ešte chýba — bez nekonečných e-mailov.