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


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

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

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

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

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

3 5

3 ответа:

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

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

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

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