Зашифрованные данные в URL-адресах

Я разрабатываю приложение PHP для управления заказами для компании. Чтобы просмотреть заказ, URL-адрес в настоящее время /orders/view/3502 .

Я не хочу, чтобы идентификатор заказа отображался в URL-адресе, поэтому я использовал библиотеку шифрования CodeIgniter для шифрования идентификатора в URL-адресе. URL (после шифрования) выглядит как /orders/view/AaffGdQQ .

Проблема, с которой я столкнулась, иногда зашифрованный идентификатор содержит знак косой черты или знак плюса, который не работает корректно в URL. CodeIgniter читает URL-адрес на основе косой черты, поэтому, если зашифрованный идентификатор имеет косую черту, он будет читать это как 2 переменные, а не один. Кроме того, знаки плюс интерпретируются как пробелы в URL-адресах.

Итак, мой вопрос: как я могу зашифровать идентификатор и убедиться, что строка не содержит знак плюса или косой черты?

EDIT: у меня была идея проверить, содержит ли зашифрованный идентификатор знак слэш или плюс, и если это так, зашифруйте его снова. По какой-то причине каждый раз, когда идентификатор шифруется, он отличается, так что это сработает.

Solutions Collecting From Web of "Зашифрованные данные в URL-адресах"

Вы также можете base64_encode (). Это также сделает его намного дольше и станет «более безопасным». Также добавляет слой обфускации.

Может быть, передача платных данных через urlencode() исправит это? После этого вам придется перехватывать данные перед выполнением CodeIgniter и запускать urldecode() .

Просто быстрая идея, так что удачи!

Найдите некоторые символы, которые шифрование не использует и не заменяет их по мере их соответствия. При использовании URL-адресов отмените его.