Зашифрованные данные в URL - PullRequest
5 голосов
/ 03 декабря 2010

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

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

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

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

РЕДАКТИРОВАТЬ: У меня была идея проверить, содержит ли зашифрованный идентификатор косую черту или знак плюс, и если это так, зашифровать его снова. По какой-то причине каждый раз, когда идентификатор шифруется, он отличается, поэтому это будет работать.

Ответы [ 3 ]

9 голосов
/ 03 декабря 2010

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

1 голос
/ 03 декабря 2010

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

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

0 голосов
/ 03 декабря 2010

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

...