Инструмент за кодиране на URL низ
Инструмент за ескейпване на URL низове
Въведение
В сферата на уеб разработката и интернет комуникациите, URL адресите (Uniform Resource Locators) играят решаваща роля в идентифицирането на ресурси в мрежата. Въпреки това, URL адресите имат ограничения относно символите, които могат да съдържат. Някои символи имат специални значения, докато други са небезопасни за употреба в URL адреси поради възможността за неправилно тълкуване или корупция по време на предаване.
Кодирането на URL, известно също като процентно кодиране, е механизъм за преобразуване на специални символи в формат, който може да бъде предаван през интернет. Този инструмент ви позволява да въведете URL низ и да ескейпнете специалните символи, осигурявайки, че URL адресът е валиден и може да бъде интерпретиран правилно от уеб браузъри и сървъри.
Разбиране на кодирането на URL
Какво е кодирането на URL?
Кодирането на URL включва замяна на небезопасни ASCII символи с %
, последвано от два шестнадесетични знака, представляващи ASCII кода на символа. То гарантира, че информацията се предава през интернет без изменения.
Например, символът за интервал ' '
се заменя с %20
.
Защо е необходимо кодирането на URL?
URL адресите могат да бъдат изпращани през интернет, използвайки само ASCII символи. Тъй като URL адресите често съдържат символи извън този набор, те трябва да бъдат преобразувани в валиден ASCII формат. Кодирането на URL гарантира, че специалните символи не причиняват непредвидени ефекти или грешки в уеб заявките.
Символи, които трябва да се кодират
Според спецификацията RFC 3986, следните символи са резервирани в URL адресите и трябва да бъдат процентно кодирани, ако ще се използват буквално:
- Общи разделители:
:
,/
,?
,#
,[
,]
,@
- Подразделители:
!
,$
,&
,'
,(
,)
,*
,+
,,
,;
,=
Освен това, всякакви не-ASCII символи, включително символи от Unicode, трябва да бъдат кодирани.
Как работи кодирането на URL?
Процесът на кодиране
-
Идентифициране на специални символи: Парснете URL низ и идентифицирайте символите, които не са неразрешени ASCII символи (букви, цифри,
-
,.
,_
,~
). -
Конвертиране в ASCII код: За всеки специален символ, получете неговата ASCII или Unicode кодова точка.
-
Конвертиране в UTF-8 байтова последователност (ако е необходимо): За не-ASCII символи, кодирайте символа в един или повече байта, използвайки UTF-8 кодиране.
-
Конвертиране в шестнадесетичен формат: Преобразувайте всеки байт в неговия двуцифрен шестнадесетичен еквивалент.
-
Добавяне на символа процент: Поставете всеки шестнадесетичен байт пред символ
%
.
Пример за кодиране
-
Символ:
' '
(интервал)- ASCII код:
32
- Шестнадесетичен:
20
- Кодирано URL:
%20
- ASCII код:
-
Символ:
'é'
- UTF-8 кодиране:
0xC3 0xA9
- Кодирано URL:
%C3%A9
- UTF-8 кодиране:
Гранични случаи, които да се вземат предвид
-
Unicode символи: Не-ASCII символите трябва да бъдат кодирани в UTF-8 и след това процентно кодирани.
-
Вече кодирани процентни знаци: Процентните знаци, които са част от процентните кодировки, не трябва да бъдат повторно кодирани.
-
Резервирани символи в заявки: Някои символи имат специални значения в заявките и трябва да бъдат кодирани, за да се предотврати нарушаване на структурата.
Декодиране на URL
Какво е декодирането на URL?
Декодирането на URL е обратният процес на кодирането на URL. То преобразува процентно кодирани символи обратно в оригиналната им форма, правейки URL адреса четим и интерпретируем от хора и системи.
Процес на декодиране
-
Идентифициране на процентно кодирани последователности: Намерете всички
%
символи, последвани от два шестнадесетични знака в URL низа. -
Конвертиране на шестнадесетичен формат в байтове: Преведете всяка шестнадесетична стойност в съответстващия байт.
-
Декодиране на UTF-8 байтове (ако е необходимо): За многобайтови последователности, комбинирайте байтовете и ги декодирайте, използвайки UTF-8 кодиране, за да получите оригиналния символ.
-
Замяна на кодирани последователности: Заместете процентно кодирани последователности с декодираните символи.
Пример за декодиране
-
Кодирано:
hello%20world
%20
се превежда на интервал' '
- Декодирано:
hello world
-
Кодирано:
J%C3%BCrgen
%C3%A4
се превежда на'ü'
в UTF-8- Декодирано:
Jürgen
Значение на декодирането на URL
Декодирането на URL е от съществено значение при обработка на потребителски вход от URL адреси, четене на параметри на заявки или интерпретиране на данни, получени от уеб заявки. То гарантира, че информацията, извлечена от URL адреса, е в правилната, предвидена форма.
Случаи на употреба
Уеб разработка
-
Параметри на заявки: Кодиране на потребителски вход в параметри на заявки, за да се предотвратят грешки или уязвимости в сигурността.
-
Параметри на пътища: Безопасно включване на динамични данни в URL пътища.
Предаване на данни
-
API и уеб услуги: Осигуряване на правилно форматирани данни, изпратени до API.
-
Интернационализация: Подкрепа на URL адреси с символи от различни езици.
Сигурност
- Предотвратяване на инжекционни атаки: Кодиране на входовете, за да се намали рискът от междусайтово скриптиране (XSS) и други инжекционни атаки.
Алтернативи
Докато кодирането на URL е от съществено значение, има сценарии, в които други методи на кодиране могат да бъдат по-подходящи:
-
Base64 кодиране: Използва се за кодиране на бинарни данни в URL адреси или когато е необходима по-висока плътност на информацията.
-
UTF-8 кодиране без процентно кодиране: Някои системи използват директно UTF-8 кодиране, но това може да доведе до проблеми, ако не е обработено правилно.
Обмислете спецификите на вашето приложение, за да изберете най-подходящия метод на кодиране.
История
Кодирането на URL беше въведено с ранните спецификации на стандартите за URL и URI (Uniform Resource Identifier) през 90-те години. Необходимостта от последователен начин за кодиране на специални символи възникна от разнообразните системи и набори от символи, използвани по целия свят.
Ключови етапи включват:
-
RFC 1738 (1994): Определя URL адресите и въвежда процентното кодиране.
-
RFC 3986 (2005): Актуализира синтаксиса на URI, уточнявайки правилата за кодиране.
С времето, кодирането на URL стана неразривна част от уеб технологиите, осигурявайки надеждна комуникация между различни системи и платформи.
Примери за код
Ето примери за това как да извършите кодирането на URL в различни програмни езици:
' Пример на Excel VBA
Function URLEncode(ByVal Text As String) As String
Dim i As Integer
Dim CharCode As Integer
Dim Char As String
Dim EncodedText As String
For i = 1 To Len(Text)
Char = Mid(Text, i, 1)
CharCode = AscW(Char)
Select Case CharCode
Case 48 To 57, 65 To 90, 97 To 122, 45, 46, 95, 126 ' 0-9, A-Z, a-z, -, ., _, ~
EncodedText = EncodedText & Char
Case Else
If CharCode < 0 Then
' Обработка на Unicode символи
EncodedText = EncodedText & "%" & Hex(65536 + CharCode)
Else
EncodedText = EncodedText & "%" & Right("0" & Hex(CharCode), 2)
End If
End Select
Next i
URLEncode = EncodedText
End Function
' Използване:
' =URLEncode("https://example.com/?name=Jürgen")
Забележка: Изходът може да варира леко в зависимост от начина, по който всеки език обработва резервираните символи и интервалите (например, кодиране на интервали като %20
или +
).
SVG диаграма на процеса на кодиране на URL
Съображения за сигурност
Правилното кодиране и декодиране на URL адреси е критично за сигурността:
-
Предотвратяване на инжекционни атаки: Кодиране на потребителски вход помага да се предотврати изпълнението на злонамерен код, намалявайки рисковете от междусайтово скриптиране (XSS) и SQL инжекции.
-
Цялост на данните: Гарантира, че данните се предават без изменения или корупция.
-
Съответствие със стандартите: Спазването на стандартите за кодиране избягва проблеми с интероперативността между системите.
Референции
- RFC 3986 - Унифициран идентификатор на ресурси (URI): https://tools.ietf.org/html/rfc3986
- Какво е кодирането на URL и как работи? https://www.urlencoder.io/learn/
- Процентно кодиране: https://en.wikipedia.org/wiki/Percent-encoding
- Стандарт на URL: https://url.spec.whatwg.org/
- URI.escape е остаряла: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated
Заключение
Кодирането на URL е основен аспект на уеб разработката и интернет комуникациите. Чрез преобразуването на специални символи в безопасен формат, то гарантира, че URL адресите се интерпретират правилно от браузърите и сървърите, поддържайки целостта и сигурността на предаването на данни. Този инструмент предоставя удобен начин за ескейпване на специални символи в URL адресите ви, подобрявайки съвместимостта и предотвратявайки потенциални грешки или уязвимости в сигурността.