Я разрабатываю приложение PHP для управления заказами для компании. Чтобы просмотреть заказ, URL-адрес в настоящее время /orders/view/3502
.
Я не хочу, чтобы идентификатор заказа отображался в URL-адресе, поэтому я использовал библиотеку шифрования CodeIgniter для шифрования идентификатора в URL-адресе. URL (после шифрования) выглядит как /orders/view/AaffGdQQ
.
Проблема, с которой я столкнулась, иногда зашифрованный идентификатор содержит знак косой черты или знак плюса, который не работает корректно в URL. CodeIgniter читает URL-адрес на основе косой черты, поэтому, если зашифрованный идентификатор имеет косую черту, он будет читать это как 2 переменные, а не один. Кроме того, знаки плюс интерпретируются как пробелы в URL-адресах.
Итак, мой вопрос: как я могу зашифровать идентификатор и убедиться, что строка не содержит знак плюса или косой черты?
EDIT: у меня была идея проверить, содержит ли зашифрованный идентификатор знак слэш или плюс, и если это так, зашифруйте его снова. По какой-то причине каждый раз, когда идентификатор шифруется, он отличается, так что это сработает.
Вы также можете base64_encode (). Это также сделает его намного дольше и станет «более безопасным». Также добавляет слой обфускации.
Может быть, передача платных данных через urlencode()
исправит это? После этого вам придется перехватывать данные перед выполнением CodeIgniter и запускать urldecode()
.
Просто быстрая идея, так что удачи!
Найдите некоторые символы, которые шифрование не использует и не заменяет их по мере их соответствия. При использовании URL-адресов отмените его.