У хронології Cloudflare описується оновлення Rules Language: до вже наявної функції sha256() додали md5(), sha1() і sha512(). Далі розберемо, як ці функції працюють у правилах Cloudflare, чим вони відрізняються за вихідними даними і в яких сценаріях варто бути особливо обережними.
Що саме додали в Cloudflare Rules
Мова правил Cloudflare тепер підтримує три додаткові хеш-функції, які можна викликати безпосередньо в умовах і виразах правил:
md5()sha1()sha512()
За описом Cloudflare, усі ці функції працюють так само, як вже знайома sha256():
- на вхід приймають рядок або масив байтів;
- на виході повертають «сирі» байти (не hex-рядок і не Base64, поки ви самі це не застосуєте).
Вихідна довжина кожної функції
Ключова різниця між функціями — у довжині хешу, яку ви отримаєте. Для проєктування схем зберігання і порівняння це критично:
| Function | Algorithm | Output length |
|---|---|---|
md5() |
MD5 | 16 bytes |
sha1() |
SHA-1 | 20 bytes |
sha512() |
SHA-512 | 64 bytes |
Тобто, якщо у вас є зовнішня система, яка очікує хеш певної довжини (наприклад, 16 байтів для MD5 чи 64 байти для SHA-512), у правилах Cloudflare можна одразу згенерувати значення потрібного розміру.
Як працювати з «сирими» байтами в правилах
Оскільки всі функції повертають байтовий масив, для реальної інтеграції зазвичай потрібне кодування — наприклад, у Base64. У вихідному матеріалі наведено приклад для sha512() у поєднанні з encode_base64():
encode_base64(sha512("hello world"))
У цьому виразі:
sha512("hello world")обчислює SHA-512 хеш від рядка"hello world"і повертає 64 байти;encode_base64(...)перетворює ці байти на Base64-рядок, який уже можна:- порівнювати з константою у виразі;
- логувати в системи спостереження;
- передавати в заголовках до бекенду, якщо цього вимагає протокол.
Той самий підхід застосовується для md5() і sha1(): спочатку отримаєте байти, далі — явне кодування в потрібний формат (Base64, hex або інший, якщо він є в Rules Language).
Типові сценарії використання в Cloudflare Rules
Автори матеріалу прямо вказують: нові функції розраховані на системи, які вимагають саме ці алгоритми. З огляду на це, практичні сценарії можуть бути такими:
- Сумісність зі спадковими протоколами. Є зовнішній сервіс або старий API, який приймає підпис чи ідентифікатор у вигляді MD5 або SHA-1. Ви можете сформувати цей хеш прямо в правилі Cloudflare і використати його в заголовку-запиті до бекенду.
- Вирівнювання з існуючими схемами кешування. Якщо бекенд чи CDN-ланцюжок вже будує ключ кешу як, наприклад, MD5 від певної частини URL, можна відтворити це правило на рівні Cloudflare, не змінюючи схему кешування.
- Внутрішні кореляційні ідентифікатори. Для логування або аналітики може знадобитися хеш від IP, user-agent чи іншої комбінації полів, причому у форматі, з яким уже працюють на стороні SIEM/лог-платформи.
У всіх цих випадках нові функції дозволяють перенести обчислення з бекенду на рівень мережевих правил.
Обмеження і застереження щодо безпеки
У вихідному описі Cloudflare немає безпекових рекомендацій, але важливо не розширювати сферу застосування MD5 і SHA-1 без критичної потреби:
- MD5 і SHA-1 вважають криптографічно слабкими для цілей на кшталт зберігання паролів або підпису чутливих даних. Якщо мета — безпечна аутентифікація або захист від підробки, їх варто уникати і віддавати перевагу принаймні сімейству SHA-2 (наприклад,
sha256()чиsha512()), а в ідеалі — спеціалізованим алгоритмам для паролів. - Нові функції зручні саме там, де формат задає зовнішня система і немає можливості змінити алгоритм на більш сучасний.
- Якщо ви лише проєктуєте новий протокол або схему підпису, наявність
md5()таsha1()не є підставою обирати їх. У такому разі доцільніше використатиsha256()абоsha512().
Де подивитися повну специфікацію
Cloudflare окремо посилається на довідкові сторінки функцій, де наведено деталі сигнатури, типів і додаткових прикладів. Для глибшого налаштування варто звернутися до цих розділів документації:
Ці довідники корисні, якщо треба перевірити точний тип аргументів (рядок проти байтового масиву), підтримку констант, обмеження на розмір вхідних даних або поєднання з іншими функціями Rules Engine.
Джерело: Cloudflare Changelog