Як перетворити постійне посилання по тимчасову stack overflow російською

Є невелика ідея.

Раз механізм існує і він спокійно відправляє файли, то ви не думали що можна використовувати просту назву файлу? Тобто за унікальний токен взяти ім'я файлу. А користувачеві посилати пряме посилання на файл.

(Вам не доведеться десь записувати що за таким токені надати такий файл)

"Треба лише скопіювати постійне посилання на файл і перетворити її в тимчасову." Нічого не треба. Робите php скрипт який повинен отработатся раз на годину, він перевіряє час створення файлу і його зносить. (Такі речі роблять cron, timers і тррр) (залежить від ос)

(Адже він вам більше не знадобиться, термін життя файлу закінчився)

Оскільки не можна використовувати БД або інші засоби зберігання інформації, то всю інфу треба зберігати на засланні. робимо так

1) створюємо ключ шифрування - який саме залежить від типу шифрування

2) створюємо ще одну секретну рядок для підпису

Далі для кожного посилання

1) беремо посилання - це рядок

2) шифруємо її секретним ключем. Отримуємо рядок раз.

4) обидві рядки об'єднуємо, беремо від них md5 (або sha1), потім додаємо секретну рядок для підпису і знову беремо md5

Отримуємо рядок - підпис.

Формуємо тимчасове заслання на скрипт, головне в урл передати рядок раз, рядок два і підпис.

Пишемо скрипт, який отримує $ _GET параметри - зашифровану посилання, зашифроване час і підпис з п 4).

Спочатку перевіряємо що підпис вірна - якщо немає повертаємо помилку.

Потім розшифровуємо час і перевіряємо, що час не минувся.

І вже потім, якщо все ок, розшифровуємо урл і прокидаємо дані файлу через скрипт - як би даємо його на скачування.

Якщо хочеться простіше, то урл і час можна шифрувати base64 і сподіватися тільки на підпис md5. В цьому випадку секретна рядок 1) не знадобиться.

Схожі статті