через некоторое время эти ссылки перестают работать
все ссылки на сайте должны проходить через твою функцию генератор, которая преобразует их к временному виду, как минимум нужно думать какие ссылки стоит так подменять а какие нет.
Вариантов реализации много, например
- ссылка из ?a=xxx&b=yyy&... преобразуется в ?a=XXXX, где XXX идентификатор, выдаваемый и сохраняемый в базе с датой и исходной строкой ?a=xxx&b=yyy&, соответственно в роутере проводишь обратное преобразование по идентификатору из базы. Ссылки удалять из базы со временем (добавь туда дату смерти и при запросе ее сравнивай с текущей).
- или еще пример, ссылку запаковываешь в бинарную сроку, шифруешь паролем, выдаваемым на время (на весь сайт), и кодируешь результат в base64, так же будет выглядеть ?a=XXXX, достоинство - не надо хранить в базе ссылки, только текущий и прошлый пароль, недостаток - время жизни будет не у ссылки а у всех их скопом (грубо говоря выданные сегодня помрут завтра, а завтрешние - послезавтра, вне зависимости утром ты их создал или вечером)
- видел смешные реализации типа к ссылке добавить текущий таймстамп и игнорировать слишком старые, сам понимаешь такие легко обнаружить и подделать.