Рубрики
Uncategorized

Элегантный пакет расширения для запутывания идентификаторов Laravel Hashid

Автор оригинала: David Wong.

Laravel Hash id объединяет [Base 62], [Base64], [Хэшиды], [Optimus] и другие высокопроизводительные алгоритмы кодирования и обеспечивает единый, элегантный, простой и удобный в использовании интерфейс вызова для преобразования (en-код ) конфиденциальных данных в сокращаемые, прерывистые, безопасные для URL идентификаторы (идентификаторы).

Пример сценария приложения

  • Мы не хотим раскрывать обычные индексы данных, такие как идентификатор пользователя, идентификатор медиа-ресурса, идентификатор товара, номер заказа, регистрационный код, льготный код и т.д., Чтобы предотвратить вторжение искателей.
  • Реконструируйте существующий механизм кодирования (генерации идентификаторов): используйте первичный ключ индекса базы данных, но путайте его с внешним миром.
  • Зашифрованные строки дополнительно запутываются, и генерируются строки, безопасные для URL.
  • Простые и унифицированные методы вызова используют различные алгоритмы кодирования, различные параметры кодирования одного и того же алгоритма или пользовательские алгоритмы.

Проект Дома

Домашняя страница проекта и Подробные документы: https://github.com/ElfSundae/…

Звездная обратная связь для новой упаковки

устанавливать

$ composer require elfsundae/laravel-hashid

Для Lumen или Laravel менее 5,5 вам необходимо зарегистрировать поставщика услуг вручную:

ElfSundae\Laravel\Hashid\HashidServiceProvider::class

Публикация файлов конфигурации:

# For Laravel application:
$ php artisan vendor:publish --tag=hashid

# For Lumen application:
$ cp vendor/elfsundae/laravel-hashid/config/hashid.php config/hashid.php

Для настройки

Файлы конфигурации Has hid очень похожи на конфигурацию многих служб управления платформы Laravel, таких как базы данных, кэши, очереди и т.д. Поэтому не требуется дополнительного времени, чтобы научиться его настраивать.

Давайте возьмем пример:

'default' => 'id',

'connections' => [

    'basic' => [
        'driver' => 'base64',
    ],

    'hashids' => [
        'driver' => 'hashids',
        'salt' => 'sweet girl',
    ],

    'id' => [
        'driver' => 'hashids_integer',
        'salt' => 'My Application',
        'min_length' => 6,
        'alphabet' => '1234567890abcdef',
    ],

    'base62' => [
        'driver' => 'base62',
        'characters' => 'f9FkqDbzmn0QRru7PBVeGl5pU28LgIvYwSydK41sCO3htaicjZoWAJNxH6EMTX',
    ],

],

Воспользуйся

  • Используйте идентификатор хэша() Глобальные функции для получения экземпляров подключения или драйверов.
  • Используйте hash id_encode() Глобальные функции закодированы.
  • Используйте hash id_decode() Глобальные функции декодируются.

Пример:

hashid_encode(123456);  // "xkNDJ"
hashid_decode('xkNDJ'); // 123456

hashid_encode(123456, 'optimus');       // 1101845824
hashid_decode(1101845824, 'optimus');   // 123456

hashid_encode(123456, 'base62');        // "W7E"
hashid_encode('123456', 'base62');      // "FMJUCzH4"
hashid_decode('W7E', 'base62_integer'); // 123456

Встроенный привод

  • [Base62]: base62 , base62_интегер
  • [Base64]: base64 , base64_интегер
  • [Хэшиды]: хэшиды , hashids_hex , hashids_integer , hashids_string
  • [Шестнадцатеричный]: шестнадцатеричный , hex_integer
  • [Оптимус]: Оптимус

Консольные команды

  • идентификатор хэша:алфавит Генерация случайных строк 0-9a-zA-Z
  • хешид:optimus Генерировать параметры для кодирования [Optimus]

Пользовательский драйвер

Чтобы использовать свой собственный алгоритм кодирования и декодирования, вам нужно только создать реализацию класса ElfSundae\Laravel\Hashid\Интерфейс драйвера Интерфейс в порядке. Для этого интерфейса существует только два метода: кодирование и декодирование . Метод инициализации необязательно получает имя с именем $config Параметры конфигурации также поддерживают внедрение зависимостей с запросом типа.

Например:

encrypter = $encrypter;

        $this->serialize = $config['serialize'] ?? false;
    }

    public function encode($data)
    {
        return $this->encrypter->encrypt($data, $this->serialize);
    }

    public function decode($data)
    {
        return $this->encrypter->decrypt($data, $this->serialize);
    }
}

Чтобы использовать этот пользовательский драйвер, укажите его в файле конфигурации:

'connections' => [

    'custom' => [
        'driver' => App\Hashid\CustomDriver::class,
        'serialize' => false,
    ],

    // ...
]

Примеры вызовов:

hashid_encode(123456, 'custom');

Если вы хотите использовать короткое имя для пользовательского драйвера, просто зарегистрируйте привязку контейнера:

$this->app->bind('hashid.driver.custom', CustomDriver::class);

Для получения дополнительной информации, пожалуйста, обратитесь к домашней странице проекта: https://github.com/ElfSundae/…