Функции шифрования Albireo CMS
encodeURL64 decodeURL64 encryptDecrypt
Функция encodeURL64
Функция для безопасного кодирования строк с сохранением целостности данных при передаче через URL.
Сигнатура
function encodeURL64(string $str): string
Аргументы
- string
$str
- Исходная строка для кодирования. Может содержать любые данные.
Возвращаемое значение
Закодированная строка (string
) в формате:
[8-символьный хэш CRC32][данные в base64 с заменой символов]
Алгоритм работы
- Сжимает данные с помощью
gzdeflate()
(уровень сжатия 9 - максимальный) - Вычисляет 8-символьный хэш CRC32b для проверки целостности
- Кодирует данные в base64
- Заменяет символы '+', '/', '=' на '._-' для URL-безопасности
- Объединяет хэш и закодированные данные
Примеры использования
// Базовое кодирование $encoded = encodeURL64('confidential information'); // Использование в URL параметрах $params = ['id' => 123, 'token' => 'abc']; $query = encodeURL64(json_encode($params)); $url = "https://example.com/api?data={$query}"; // Декодирование обратной функцией $original = decodeURL64($encoded);
Особенности
- Сжатие уменьшает размер данных перед кодированием
- Контрольная сумма позволяет обнаружить повреждение данных
- URL-безопасные символы: ._- вместо +/=
- Максимальный уровень сжатия (9) для минимизации размера
Рекомендации
- Не подходит для чувствительных данных без дополнительного шифрования
- Всегда проверяйте результат
decodeURL64()
на false
Функция decodeURL64
Функция для безопасного декодирования строк, закодированных методом encodeURL64()
.
Сигнатура
function decodeURL64(string $str): string|false
Аргументы
- string
$str
- Строка, закодированная функцией
encodeURL64()
. Должна содержать 8-символьный хэш и данные в base64.
Возвращаемое значение
Декодированная строка (string
) или false
в случае:
- Неверного формата входных данных
- Несоответствия контрольной суммы
- Ошибки распаковки данных
Алгоритм работы
- Извлекает 8-символьный хэш CRC32 из начала строки
- Заменяет URL-безопасные символы (._-) на стандартные base64 (+/=)
- Декодирует строку из base64 в бинарный формат
- Проверяет соответствие хэша декодированным данным
- Распаковывает данные с помощью gzinflate()
Примеры использования
// Базовое кодирование $encoded = encodeURL64('confidential information'); // Использование в URL параметрах $params = ['id' => 123, 'token' => 'abc']; $query = encodeURL64(json_encode($params)); $url = "https://example.com/api?data={$query}"; // Декодирование обратной функцией $original = decodeURL64($encoded);
Особенности
- Использует строгий режим
base64_decode()
- Контрольная сумма проверяется перед распаковкой
- Обрабатывает исключения при распаковке
- Оптимизирована для работы с URL (замена проблемных символов)
Рекомендации по безопасности
- Всегда проверяйте результат на false
- Не используйте для декодирования непроверенных пользовательских данных
- Для критически важных данных рассмотрите дополнительное шифрование
Функция encryptDecrypt
Функция для симметричного шифрования/дешифрования данных с использованием OpenSSL. Получает секретный ключ из конфигурации (secretKey
) или использует SITE_URL
.
Сигнатура
function encryptDecrypt(string $action, string $data): string|false
Аргументы
- string
$action
- Тип операции:
'encrypt'
для шифрования или'decrypt'
для дешифрования - string
$data
- Данные для обработки (исходный текст при шифровании, зашифрованная строка при дешифровании)
Возвращаемое значение
Результат операции (string
) или false
в случае ошибки.
Примеры использования
// Шифрование данных $sensitiveData = 'credit card number'; $encrypted = encryptDecrypt('encrypt', $sensitiveData); // Дешифрование данных $original = encryptDecrypt('decrypt', $encrypted);
Безопасность
- Использует стандартный алгоритм AES-256-CBC
- Требует надежного секретного ключа в конфигурации
- Результат шифрования кодируется в base64
Рекомендации
- Всегда используйте надежный
secretKey
в конфигурации - Не используйте
SITE_URL
в качестве ключа в production - Проверяйте результат на
false
при дешифровании