Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top