Lexxtor
@Lexxtor
PHP, Yii2, Android

Как лучше зашифровать URL?

Отправляю с сайта письма. Все переходы по ссылкам в письмах должны идти через скрипт с редиректом.
Можно было бы сделать так: site.ru/redirect?token=fkentov35na322k6g52 где token это случайная строка хранимая в БД вместе с URL на который надо редиректить и id письма.
Но писем будет отправляться тысячи и иметь БД таблицу для токенов не хочется. Поэтому я шифрую id письма и URL в строку token и передаю в адресе скрипта, скрипт её расшифровывает и получает URL переадресации.
Все работает, только этот token получается длинный:

При пароле шифрования в 11 символов, такой:
5BRpsImR02MaR2gWlDZS__OyMetPHaG3MtacaX6C5XgO9YornNgBVQD89RAaifdT-3NGqWt9MqB4dGIQhVzeAolw8kky5ELUf7hJ2QaDmQe7J4WPdxMlgvbKncefCrPbx1o_ech-UW87DCuVJAkchE-bf0I8t8W0x1LKoLJSBX_slQV6VYffjhHUQiA5Iz-iQ7UMYrWqUQ


При пароле шифрования в 5 символов, такой:
tFR6K4OibiwsIpIQ3jClkyRhxVaVH9lG0w_hwoMAbDq3qQELIoyXYJAXkR_LPJhFt1tQvbq_e_1YehYQaXMWCUfIqLQSST2yk7zHJq-O4i_1xphtk3dMSxiMhdO-ZNRCAmNZZJTNIZbC7evV3Vs4MpDU4rLw6FeMQJLynplcsJ8cvOxvwenoWw1nxg


В HTML письма ссылки должны быть такие: <a href="URL">URL</a> и они будут получаться очень длинные в тексте. Зато злоумышленник не сможет подобрать токен и исказить статистику.

Как это можно улучшить? Другие сервисы ведь тоже используют такой подход?
  • Вопрос задан
  • 3638 просмотров
Решения вопроса 1
alsopub
@alsopub
Вы все верно написали - варианта два - или хранить ссылки в БД или шифровать их прямо в URL.
Если ссылок у вас ограниченное количество, можно занести их все с БД, на выходе получим, например, ID-Link = 0..99 (сотня ссылок).
Далее вы, как я понял, хотите отследить пользователей - это уже ID-User в диапазоне, допустим, 0..9999.
Итого нам надо "вшить" в ссылку два числа - 99 и 9999, например в виде 99:9999.
Вот их я и предлагаю зашифровать, ссылка получится не очень длинная.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Adamos
@Adamos
Вам же не надо засекретить ссылки, вам всего лишь нужно подсчитать переходы.
99% пользователей не будет заморачиваться с вытягиванием настоящей ссылки из вашей даже после простого urlencode... Ну, в крайнем случае, замените перед кодированием точку на запятую, а на сервере поменяйте обратно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
27 нояб. 2024, в 19:08
1500 руб./в час
27 нояб. 2024, в 18:19
2000 руб./за проект
27 нояб. 2024, в 17:41
2000 руб./за проект