Există o idee mică.
Odată ce mecanismul există și trimite în siguranță fișierele, nu credeți că puteți folosi un nume de fișier simplu? Ie pentru un token unic pentru a lua numele fișierului. Și utilizatorul trimite o legătură directă la fișier.
(nu trebuie să scrie undeva că un astfel de jeton este dat un astfel de fișier)
"Trebuie doar să copiați link-ul permanent la fișier și să-l convertiți temporar." Nu este nevoie de nimic. Efectuați un script php care ar trebui elaborat o dată pe oră, verifică timpul de creare a fișierului și îl demolează. (lucrurile astea fac cron, timers și trrr) (depinde de viespi)
(nu veți mai avea nevoie de ea, durata de viață a fișierului a expirat)
Deoarece nu puteți utiliza o bază de date sau alte mijloace de stocare a informațiilor, toate informațiile trebuie să fie stocate în legătură. Noi facem asta
1) creați o cheie de criptare - care depinde exact de tipul de criptare
2) creați o altă linie secretă pentru semnătură
Înainte pentru fiecare legătură
1) luăm legătura este o linie
2) criptați-l cu o cheie secretă. Luăm șirul o dată.
4) îmbinați ambele linii, luați md5 (sau sha1) de la acestea, apoi adăugați un șir secret pentru semnătură și din nou luați md5
Primim șirul - semnătura.
Creăm un link temporar la script, principalul lucru din URL este să treci șirul o dată, linia doi și semnătura.
Scriem un script care primește parametrii $ _GET - o legătură criptată, un timp criptat și o semnătură din n 4).
Mai întâi verificăm dacă semnătura este corectă - dacă nu este returnată nicio eroare.
Apoi decodificăm timpul și verificăm că timpul nu a trecut.
Și numai atunci, dacă totul este în regulă, decriptați adresa URL și aruncăm datele fișierului prin script - ca și cum l-am da să se descarce.
Dacă doriți să fie mai simplu, puteți cripta baza64 și baza de timp64 și sperăm doar pentru semnătura md5. În acest caz, linia secretă 1) nu este necesară.