Інструменти розробника · URL енкодер & декодер
Двомісний URL кодування: як %2520 і як його виявити і скасувати
· Як працює
Опубліковано ToolAcre · Редакція журналу
виворітна обробка Завантажити плагін розробник-workflow декупація

А %2520 в URL зашифровано простір двічі. Цей пост пояснює помилки трубопроводу, які викликають його, як розпізнати підпис, і скільки проходить декод.
Двомісний URL кодування: коли %2520 означає простір, що через два кодувальники
Ім'я файла, що приєднується до «ми%20fЛоготип ВТС file.pdf"Другий кодування сигналів: простір було закодовано %20, потім сам знак відсотків був зашифрований на %25, виробництво %2520 у фіналі URL. Кожен шар системи, такі як клієнт-код, веб-фреймворк, або зворотна проксі може зашифрувати один раз. Коли два окремих шари закодують, єдиний символ стає заплутаним.
Двохмісні поверхні кодування найчастіше в комплексних системах перенаправлення та перенаправлення. Розробник може генерувати кодований URL всередині каркаса, який сам кодує всі вихідні за замовчуванням. Мережа зворотних проксі або контенту може перекодити URL-адреси, які вже прибули кодування з системи Backend. параметр, що містить вже зареєстроване значення, знову закодовано, перш ніж бути зашифровано всередині іншого URL структура.
до %25 це говорить — про те, що процентний знак отримує кодований, тому %20 до %2520 і %C3%A9 стає %25C3%25A9
Підпишіться на нашу розсилку25 з'являються, де ви зазвичай очікуєте, щоб побачити один відсоток знака в URL або дані. У звичайному кодуванні URL, ви ніколи не побачите %25 якщо відправка літра "%25". Якщо простір зашифровано як %20 знову закодовано, він стає %2520.
Підкреслений характер, як é, який кодує нормально до %C3%A9, стає %25C3%25A9, коли закодовано двічі двома різними системами в послідовності. Навчання на місці %25 візерунок в URL Бари, колоди та повідомлення про помилки заощаджують незліченні години роздрібної роботи в виробничих умовах, де дані протікає через кілька сервісів.
Де введено подвійне кодування - клієнтський код плюс рамки, перенаправлення, проксі та шаблонні помічники
Подвійне кодування знищує як читабельність, так і можливість для серверно-завантажувальних систем, щоб парсерувати URL правильно. Файл "my file.pdf"ми"%20file.pdf" при правильній кодуванні. Якщо закодовано рядок перекодовано — за допомогою форми — стає «ми»%2520file.pdf.
Коли сервер отримує цей і декодує його один раз, він бачить "ми%20file.pdf" в якості літерального імені, а не розпізнаючи його як "my file.pdf". Будь-які програми, які очікують на отримання тільки одного проходу декода, отримають кутовий результат. Незважаючи на те, що розробники двічі зазначають проблеми з значеннями, які були тільки зашифровані після того, як він фактично пошкоджений законними даними з додатковим декодом.
Приклад роботи: декодування URL один прохід в час — що кожен прохід показує і коли зупинитися
Клієнт JavaScript Коди та серверні за замовчуванням є найбільш поширеними джерелами випадкового подвійного кодування у виробничих системах. Р JavaScript додаток може використовувати кодURIComponent на значення, потім перенести його безпосередньо в рамку, яка зашифрує всі рядкові виводи за замовчуванням, тим самим кодуючи знак відсотка другий раз. Зворотний проксі-шаровий призначений для видалення URL-адрес може перекодити параметри, які вже вийшли попередньо закодовано з програми Backend.
Перенаправлення URL вбудований конденсаторний вхід користувача за допомогою функції папера може одночасно зашифрувати одночасно обидва кроки. Зароблений приклад: користувач подає "test&value" через HTML у вигляді "test%26value". В рамках ознайомтесь з літеральним текстом та зашифровано його, виробляючи «test%2526value». Один декод дає "test%26value", все одно неправильно.
При подвійному кодуванні навмисне — URL переноситься в інший URL's параметр запиту
В одній конкретній справі: коли URL в іншому випадку URL's параметр запиту. OAuth потік і вхідні посилання іноді вимагають в'язання однієї повної URL в іншому місці. Внутрішнє URL повинен бути повністю процентований спочатку, після чого весь закодований рядок необхідно зашифрувати знову як значення параметра для зовнішнього URL.
Цей подвійний кодування є свідомим і абсолютно необхідним у цих випадках. Після того, як початковий параметр parser decodes один раз, виймаючи внутрішнє URL. Внутрішня система потім знову декодує, відновлюючи оригінальний URL. Критичний ключ – розуміння нематеріальної та документальної документації, яка чітко відповідає коментарям коду для майбутніх прихильників.
Поширені помилки — декодування до тих пір, поки нічого не змінив, які псують значення, які законно містять %25
Класична і небезпечна помилка періодично декодує нічого, поки нічого не зміниться, які будуть пошкоджені значення, які законно містять процентні ознаки в фактичних даних. Текстовий параметр "discount%"2525" (представлення літра "%25"кодовано як значення параметра, потім знову закодовано для транспорту) повністю корегують за допомогою дизайну. Визначте його одноразово врожайності «знижка%25", що все ще правильно. Визначивши його другий час врожайності «знижка%», що невірно і втрачає інформацію.
Розробник може припустити "%25"Це помилка і декодування багаторазово, втратити знак відсотків. А замість того, як ваш архітектурний попит вимагає: один раз для параметра, двічі нанесений. Підрахунок шарів, щоб дізнатися правильні операції декодування.
Що це не криється — HTML кодування суб'єкта, шаровані зверху URL, які HTML ручка для втечу
Загальні помилки включають кодування всього URL з кодомURIComponent, після чого очікується зітхання і колони для роботи як структурні глухіри, які вони не можуть після кодування. Ще одна часта помилка змішує різні стандарти кодування: деякі коди використовують процентну обробку за RFC 3986 і інший код використовує кодування форми з знаками, що представляють пробіли. Значення, як "my+file" стає дійсно неоднозначним - може означати "my файл" або це може означати літеральний текст "my+file" з плюсом.
У випадку, якщо центи, які стикаються з «ми+файлом», він стає «my%2Bfile». Якщо форма декодування випливає, що очікується плюс-як-космічний простір, він залишається неправильним. Консистенція по шарах є важливою. Кожна система повинна використовувати однаковий стандарт кодування, або кожен шар повинен бути явно документований.
Приймаємо: закодуйте точно один раз за шар — як працює URL encoder & decoder дозволяє декодувати один прохід в час і побачити кожен проміжний результат
Після того, як ви успішно визначили подвійне кодування, що відбувається в виробничих системах, фіксація залежить повністю від того, де відбувається дублювання в трубопроводі. Якщо коди клієнта і рамка кодуються, видаліть кодування з одного з них повністю. Якщо параметр переходить за допомогою декількох служб зворотнього зв'язку, простежуйте повний шлях через кожну послугу і знайдіть, яку послугу кодування, коли він не повинен робити це.
Випробувано добре, пройшовши дані про зразок через повну до кінцеву трубу і перевірте дані, надійде повністю без змін. Документація кодування при кожній межі чітко: "це кінцева точка повертає процентні параметри" або "це посередник очікує сирої UTF-8 і застосовується кодування до нього. У т. ч. кількість декодів, що проходить в документації для майбутніх розробників.