Українська

Інструменти розробника · UUID генератор

Чому crypto.randomUUID() В’язниці на HTTP Сторінки: Безпечні контексти

· Як працює

Опубліковано ToolAcre · Редакція журналу

Увійти криптографія веб-сайт

Наведено три походження: HTTPS з crypto.randomUUID доступний, локальнийhost з crypto.randomUUID доступні, HTTP Статус на сервери
Головна ToolAcre векторна ілюстрація

crypto.randomUUID роботи на локальномуhost і на HTTPS, потім фуршети на рівниніHTTP ведучий. Ця публікація пояснює правила безпечного контексту за цією поведінкою та як створити UUID безпечно, де це стосується.

TypeError на старій, тонкий всюди — симптом і різниця навколишнього середовища, що викликає його

Розробник перевіряє свою роботу на локальномуhost:3000 і UUID Генератор працює відмінно. Вони розгортаються на сцену http://staging. внутрішні. Приклад. Головна HTTP на підприємстві LAN) і код кидає TypeError: crypto.randomUUID не функція. Те ж саме код у виробництві на https://example. com працює дрібно. Невідповідність полягає в тому, що вони читають MDN докс: crypto.randomUUID обмежується збереженням контекстів. Зручний контекст HTTPS або локальний привид; звичайнийHTTP походження на LAN не захищено правилом браузера, навіть якщо мережа є приватним. Кріплення для використання crypto.getRandomValues з ручними бітовими операціями, або для оновлення серверу staging до HTTPS. Нормативно-контекстового правила було введено для запобігання чутливих API від витоку до нешифрованих підключень.

Який захищений контекст — правило браузера, яке залишає за собою певні API HTTPS походження і для локальних

Сторінка над рівниною HTTP може бути перехоплений мережевим атакатором, що підтримує криптографічні API на таку сторінку, що дозволить зробити її можливим для атаки, щоб генерувати ідентифікатори за допомогою компромісів API. HTTPS шифрує сторінку і всі API повідомлення так, що атакуючий на мережі не може перехопити або змінити код. На локальній машині не можна перехопити мережу. Будь-який HTTP походження (а LAN адреса, публічний домен без HTTPS, зворотна проксі, яка пересувається HTTP) не забезпечується визначенням. Веб-камера API розщеплюється через дві функції: crypto.randomUUID, обмежується збереженням контекстів та crypto.getRandomValues, доступні в захищених і небезпечних контекстах. Як використовувати однакову операційну систему CSPRNG.

Які частини Web Crypto є воротами — crypto.randomUUID і crypto.subtle вимагає надійного контексту crypto.getRandomValues немає

Відмінність полягає в тому, що getRandomValues не приховує факту, що ви використовуєте криптографію; сторінка, яка використовує її, повинна бути явно запиту випадкових байтів. Функція випадковим чиномUID - це зручність, яка також дотримується безпечного контексту. Якщо ваша заявка повинна генерувати UUID на сторінці несудимості, ви повинні використовувати getRandomValues і вручну встановити версію і варіант біт. RFC 9562 визначає біт операції: встановити 6 до (byte6 & 0x0f) 0x40 для версії 4й 8 до (byte8 & 0x3f) 0x80 для RFC варіант. Про нас ToolAcre РусскийУкраїнськаБеларускаяOʻzbek tiliEnglish Зменшення провалу: подавати просту сторінку зі звичайною HTTP походження, що не лікується як потенційно довірливий. Перевірте, чи відображається випадковийВихід, а потім порівняти getRandomValues, які дозволи на посилання на веб-клієнти в контекстах виявлення.

Будівництво v4 UUID від getRandomValues — маскування-і-форматування випадання, яка зберігає вас на CSPRNG коли випадковий

Цей самий код у файлі, який подається над HTTPS може призвести до випадкових Якщо виробничі звіти "randomUID не є функцією", перш за все, чи є походження захищеним контекстом, то перевірте підтримку браузера і чи інший скрипт замінив криптооб'єкт. Засіб може бути HTTPS або впровадження GetRandomValues, що встановлює UUID трохи явно. Р Math.random поліфіл не є еквівалентним падінням: він відтворює форму при скороченні криптографічного договору. Тести, які стверджують тільки dashes і версії цифр, пропускають це заміщення, тому огляд початкового шляху, а також отриманий рядок.

Зароблений приклад — відтворює відмову на http:// походження і підтверджує фіксацію

Але ідентифікатор зараз передбачуваний. Атакувальник, який захоплює кілька UUIDs з вашої системи, може прогнозувати наступний. Якщо заявка помилково лікує такий ідентифікатор як ведмедика, передбачуваність стає відмовою авторизації, а не косметичним дефектом. Правильна стратегія – оновити сервер до HTTPS (включає в себе право переходити на будь-яку сторінку з автентифікацією або конфіденційними даними) або використовувати getRandomValues з чіткими бітовими операціями (який займає більше коду, але криптографічно звук). Збережіть контекст, використовуючи браузер, ви не можете працювати над ним з змінами конфігурації або середовища. Про нас ToolAcre генератор розгортається над HTTPSй crypto.randomUUID Доступно. Коли ви генеруєте UUID У інструменті використовується як випадковийУІД (якщо перевірка захищеного контексту) або getRandomValues з бітовими операціями (якщо ви перебуваєте на рівнині) HTTPХоча це рідко.

Чому ви не повинні полити Math.random — скорочення часу та вартість безпеки

Неприємний шлях падає назад до Math.randomЯкщо ви забудете самостійно UUID Генератори і цілі несекреційні походження, використовувати getRandomValues і робити біт операції самостійно. Тест на обох HTTPS і локальнийhost, щоб підтвердити роботу випадковихUID, потім перевірити на http:// походження, щоб підтвердити ваше повернення коштів. Розуміння повноконтекстового обмеження дозволяє створювати стратегії розгортання. Якщо ваша заявка повинна працювати на приватному LAN без HTTPS (інфраструктура спадщини, вбудовані системи), getRandomValues fallback – ваш шлях вперед. Якщо у вас є вибір, оновлення HTTPS Схожі; це безкоштовно з Let's Encrypt, і інвестиції сплачуються за безпеку по всій заявці. Розвиток локальнихhost не має обмежень, тому перевірте вашу UUID генератор на локальномуhost і на HTTPS старіння перед розгортанням до виробництва. Продукція завжди повинна бути HTTPS.

Що це не охоплює — серверні робочі години, такі як Node.js і Дено, які викладають API без надійного правила

Обмеження не є помилкою або нагородженням; це функція безпеки, яка запобігає випадкам і силам, які ви думаєте про шифрування. Широкий патерн - це те, що веб-криптографічні API закріплюються за допомогою безпечного контексту. crypto.getRandomValues, крипто. тонкий. шифрування, крипто. тонкий. генеруватиKey і всі інші чутливі операції вимагають HTTPS або локальний привид. Не виняток, не перейди, ніяк не вдається відключити чек. Єдина незахищена сторінка розбиває гарантії безпеки для користувачів. Навіть якщо ви обережні використовувати криптографічні API тільки на певних сторінках, помилка (або залежність, яка включає в себе UUID генератор може витікати випадковість генерації до нешифрованої сторінки. Про нас ToolAcre генератор використовує getRandomValues, який доступний, але оповіщує будь-який рецензент коду, який відбувається.

Похід: зафіксувати походження, не генератор — ToolAcre подається HTTPS, тому його генератор працює в захищеному контексті за допомогою дизайну

Ще краще, він відмовляється генерувати ідентифікатор, якщо захищений контекст дійсно недоступний (в середовищі, де getRandomValues також не доступний, який є рідкісним, але можливо в старих або вбудованих системах). Вітання існуючої системи HTTPS для забезпечення надійного криптографічного API є загальним проектом. Почати з походження, де генеруються UUIDs (на сервері автентифікації, API Резервне копіювання або налаштування ключа. Запитати TLS Сертифікат (шифрування Let забезпечує їх безкоштовно). Налаштування вашого веб-сервера HTTPS за замовчуванням та перенаправлення HTTP запити HTTPSТест з декількома браузерами та API Клієнтам забезпечити всі роботи. Потім перевірте ваш код для будь-яких інших криптографічних API, які можуть бути викликані нерозшифрованими сторінками і зафіксувати їх. Про нас ToolAcre генератор припускає HTTPS; якщо ви використовуєте його, ви вже є частиною способу там.