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

Незаймана URL в іншому місці є найбільш поширеним місцем, що відсотків загинається неправильно. Цей пост показує, чому внутрішній URL"s ?, & = повинні бути закодовані, як це зробити, і як перевірити результат.
Зворотній зв'язок, що впав половину параметрів — внутрішня URL's & swallowed по зовнішній рядок запиту
Повернутися до посилання, що скидається половину його параметрів, є шаблоном розвантаження кожного розробника. Ввійти користувача, додаток намагається переадресувати до ?next=https://example.com/page?id=1&user=alice, і вони закінчуються example.com/page?id=1. Амперс внутрішнє URL був запарений як сепаратор між зовнішніми параметрами запиту. Два URL-адреси з різними емітерами означає, що внутрішня повинна бути зашифрована.
Коли в'язання одного URL всередині іншого як параметр запиту, що внутрішня адреса стає непрозорими даними до зовнішнього шару. Знак питання, амперс і рівний знак не повинні бути прочитані як структурні глушники. Відсоткова обробка перетворює їх: ? %3Fй стає %26, = %3D. Після того, як початковий парсер лікує кодований рядок як значення параметра.
Два URL-адреси, два набори глухих — чому внутрішня URL є просто значенням для зовнішнього
encodeURI Компонент на повну внутрішню URL виробляє повний захист: кодURIComponent("https://example.com/a?b=1&c=2") повертає "https%3A"%2F%2FПриклад.com%2Fз%3Fб%3Д1%26c%3D2. Кожен структурний характер %XX заперечення, так що зовнішній парсер не може зловживати безглуздими глушниками. Змагаючий підхід, як закодуРі листя сітківки і знаки питання, які передаються, перевтілюють неоднозначність, коли результат стає значенням запиту.
Сервер декодує один раз. Після вилучення наступного параметра, один виклик decodeURIComponent відновлює внутрішній URL до початкової форми. Придбання результату як новий рядок запиту, потім бачить правильну структуру параметра. Double-decoding - це ризик, коли однакова вартість проходить через кілька шарів; %26 стає і після того, як один декод і залишається і після другого.
кодування на весь внутрішній URL — що отримує кодовані, включаючи :, / і ?
Основне правило простий: будь-який характер, який має значення в URL syntax, в тому числі : / ? = & #, повинні бути відсотково зашифровані, коли він з'являється в значення параметра запиту. Це забезпечує зовнішній аналізатор тільки бачить структуру параметра, який ви налаштовує і не будь-які випадковості дельіметри, приховані всередині значення, яку ви проходите. Використовуйте кодування, щоб впоратися з цим кодуванням повністю і надійно.
Тестувати це кодування в URL encoder & decoder: вставте внутрішню URL, зашифрувати його в режимі значення, дотримуватися %XX вихід. Використовуйте режим Decoder, щоб переконатися, що він відповідає точно. Цей інструмент показує кінцевий код, щоб закінчити, так що ви можете копіювати результати безпосередньо в свій код програми з впевненістю.
?next=https://example.com/a?b=1&c=2 правильно — кодований рядок та декодування на стороні сервера
критична межа безпеки сидить поряд з кодуванням. Сервер повинен перевірити, що декодований пункт є дійсно безпечним для перенаправлення. Персентне покриття робить URL структура неоднозначні; це не робить довільні URL-адреси безпечним. Відкриті вразливості з’являються при використанні сліпо слідувати URL-адресам користувача. Перевірка домену або підтвердження користувача.
Увімкнення фіксує задачу парсингу; перевірка фіксує проблему безпеки. Це окремі побоювання на різних шарах. URL encoder & decoder показує кодування правильно. Сервер повинен додати перевірку: перевірити список, перевірити домен або запитати підтвердження. Без перевірки, належним чином закодовано перенаправлення будь-якого домену залишається обмеженим.
Відкритий ризик — чому сервер повинен перевіряти декодований пункт призначення, не просто декодувати його
Загальні помилки накопичуються тут. Розробники іноді зашифрують тільки частину запиту, залишаючи slashes, які розбиває структуру. Інші кодують весь вбудований параметр, включаючи ?next=, створюючи подвійний кодування. Визначте дійсність за рахунок парсингу без декодування, прочитавши зашифровану структуру. Будівля з кодом
Ще однією поширеною помилкою є довіра браузера, щоб автоматично зафіксувати неправильний параметр. URL-адреси є даними і повинні бути оброблені точно, як дані. кодування є стандартний інструмент для цієї роботи. URL енкодер & decoder зберігає цей процес локально, тому ви можете перевірити точне байт перед доставкою в виробництво.
Загальні помилки — кодування тільки частини запиту або довіра браузера, щоб виправити його
Параметри OAuth redirect uri слідувати таким же шаблоном. Сервер авторизації переходить на контроль клієнту за відомою адресою URL з декількома параметрами. Захоплюючи його в якості одного значення забезпечує збереження параметрів, що виживають транспортні засоби, а клієнт декодує один раз перед використанням. Призначений кодування в OAuth потоки викликає токени і параметри зворотного зв'язку для ванішної середньої трансмісії.
Державні параметри в OAuth використовують кодування в поєднанні з криптографічними підписами CSRF захист. Визначальники, що зберігаються на стороні клієнта і ніколи не подорожують на сервер. Прихильники не повинні розміщуватися в переадресованих URL-адресах незалежно від кодування, оскільки URL-адреси з'являються в журналах, історії веб-переглядачів і заголовків референта.
Що це не кришка — OAuth державні параметри та CSRF дизайн захисту
Стратегія тестування: створення внутрішнього URL з реальними параметрами, зашифрувати його як зовнішній значення, декодувати його в отриманому коді. Перевірити декодований результат - за допомогоюte-for-byte ідентичний оригінальному. Зареєструватися URL енкодер та декодер перед розгортанням виробництва. Обстеження мережевого трафіку та журналів для підтвердження коректного прибуття та відсутності викривлення або зашифрування даних.
Типо як %2e замість %2E Можливість декодувати правильно, але не вдається цілодобова перевірка в вторинних системах, які очікують консистенції. Заохочування помилок між бібліотеками на різних платформах є рідкісними, але можливими; тестування повного круглого поїзда ловить їх перед тим, як вони викликають проблеми виробництва і скарги клієнтів.
Вечеря: лікувати внутрішню URL як дані — як дані URL однозначний режим encoder і decoder повністю кодує його і декодер підтверджує круглу подорож
Обмежений кодування є чітким: кодURIComponent лікує ваш вхід як дані про непрозорість і вникає кожного персонажа, крім незбережених пунктуації, що робить його безпечним для гнізда в будь-якому випадку URL шар. Виконаційна межа окрема: після декодування перевірте пункт призначення, де користувач, призначений для переходу. Зареєструватися URL encoder & decoder, щоб побачити кодування показало кінець.
Порада внутрішнього URL як дані з початку. Введіть номер мобільного, який Ви вказали при укладаннi договору з банком - для ідентифікації. URL encoder & decoder показує %-відновлення будь-якої повної URL як одномісне значення запиту та виснаження круглих поїздок локально. Обидва кодування і валідація є важливим; цей інструмент ручки кодування правильно.