Генерация URL-адресов безопасных зашифрованных идентификаторов в Codeigniter - PullRequest
0 голосов
/ 02 января 2019

Для шифрования параметров в URL я использую класс шифрования codeigniter после его расширения.Целью расширения было удалить / + - из шифрования.Это работало нормально.Но после обновления до PHP 7.1 он показывает ошибку устаревания методов, связанных с mcrypt, и документация также рекомендует использовать openssl, предоставленный в библиотеке шифрования.Поэтому я реализовал его

    $this->load->library('encryption');
    $this->encryption->initialize(
        array('driver' => 'openssl')
    );
    $this->encryption->encrypt($vendor->vid);

Но он генерирует зашифрованные идентификаторы с / в нем.

1005 * 8da179e79fee45aa3c569d6c54653c99626d57b074fa599f8a109cb0c5f2edb6d7def3f1a6daf5b449d467976a8a32de0819b9af6d84b068f9ec903d41c2bcb9H / eQluY5LUANEDwmCh + / trIvaJu2Bemj2p9J2MnEMII = 1007 * Как создать URL-адрес безопасных шифрованных параметров с использованием OpenSSL в CI?

Ответы [ 2 ]

0 голосов
/ 01 мая 2019

, возможно, не отвечает на ваш вопрос, но может решить каким-то образом запутывающий URL-адрес безопасного идентификатора

для генерации идентификатора шифрования, так же как идентификатор просмотра на Youtube. Я использую Hashids Spark для CodeIgniter

https://github.com/sekati/codeigniter-hashids

цель этого помощника - реализация хешидов для генерации хешей (например, YouTube или Bitly) из чисел, чтобы запутать идентификаторы базы данных.

установка, как в инструкции, я изменяю hashids_helper.php в строке 20

require_once FCPATH . 'sparks/sk-hashids/' . HASHIDS_VERSION . '/vendor/Hashids.php';

до

require_once FCPATH . 'vendor/Hashids.php';  //according to your Hashids path
0 голосов
/ 02 января 2019

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

function encode($string)
{
    $encrypted = parent::encrypt($string);
    if ( !empty($string) )
    {
        $encrypted = strtr($encrypted, array('/' => '~'));
    }
    return $encrypted;
}

function decode($string)
{
    $string = strtr($string, array('~' => '/'));
    return parent::decrypt($string);
}
...