Инструмент за ескейпване на URL низ за безопасност
Онлайн инструмент за ескейпване на специални символи в URL низ. Въведете URL, а този инструмент ще го кодира, като ескейпва специалните символи, осигурявайки безопасността му за използване в уеб приложения.
Инструмент за кодиране на 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 в различни програмни езици:
1' Пример на Excel VBA
2Function URLEncode(ByVal Text As String) As String
3 Dim i As Integer
4 Dim CharCode As Integer
5 Dim Char As String
6 Dim EncodedText As String
7
8 For i = 1 To Len(Text)
9 Char = Mid(Text, i, 1)
10 CharCode = AscW(Char)
11 Select Case CharCode
12 Case 48 To 57, 65 To 90, 97 To 122, 45, 46, 95, 126 ' 0-9, A-Z, a-z, -, ., _, ~
13 EncodedText = EncodedText & Char
14 Case Else
15 If CharCode < 0 Then
16 ' Обработка на Unicode символи
17 EncodedText = EncodedText & "%" & Hex(65536 + CharCode)
18 Else
19 EncodedText = EncodedText & "%" & Right("0" & Hex(CharCode), 2)
20 End If
21 End Select
22 Next i
23 URLEncode = EncodedText
24End Function
25
26' Използване:
27' =URLEncode("https://example.com/?name=Jürgen")
28
1% Пример на MATLAB
2function encodedURL = urlEncode(url)
3 import java.net.URLEncoder
4 encodedURL = char(URLEncoder.encode(url, 'UTF-8'));
5end
6
7% Използване:
8% encodedURL = urlEncode('https://example.com/?name=Jürgen');
9
1## Пример на Ruby
2require 'uri'
3
4url = 'https://example.com/path?query=hello world&name=Jürgen'
5encoded_url = URI::DEFAULT_PARSER.escape(url)
6puts encoded_url
7## Изход: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// Пример на Rust
2use url::form_urlencoded;
3
4fn main() {
5 let url = "https://example.com/path?query=hello world&name=Jürgen";
6 let encoded_url = percent_encode(url);
7 println!("{}", encoded_url);
8 // Изход: https://example.com/path%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
9}
10
11fn percent_encode(input: &str) -> String {
12 use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
13 utf8_percent_encode(input, NON_ALPHANUMERIC).to_string()
14}
15
1## Пример на Python
2import urllib.parse
3
4url = 'https://example.com/path?query=hello world&name=Jürgen'
5encoded_url = urllib.parse.quote(url, safe=':/?&=')
6print(encoded_url)
7## Изход: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// Пример на JavaScript
2const url = 'https://example.com/path?query=hello world&name=Jürgen';
3const encodedURL = encodeURI(url);
4console.log(encodedURL);
5// Изход: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
1// Пример на Java
2import java.net.URLEncoder;
3import java.nio.charset.StandardCharsets;
4
5public class URLEncodeExample {
6 public static void main(String[] args) throws Exception {
7 String url = "https://example.com/path?query=hello world&name=Jürgen";
8 String encodedURL = URLEncoder.encode(url, StandardCharsets.UTF_8.toString());
9 // Замяна на "+" с "%20" за интервали
10 encodedURL = encodedURL.replace("+", "%20");
11 System.out.println(encodedURL);
12 // Изход: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
13 }
14}
15
1// Пример на C#
2using System;
3using System.Net;
4
5class Program
6{
7 static void Main()
8 {
9 string url = "https://example.com/path?query=hello world&name=Jürgen";
10 string encodedURL = Uri.EscapeUriString(url);
11 Console.WriteLine(encodedURL);
12 // Изход: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
13 }
14}
15
1<?php
2// Пример на PHP
3$url = 'https://example.com/path?query=hello world&name=Jürgen';
4$encodedURL = urlencode($url);
5echo $encodedURL;
6// Изход: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%C3%BCrgen
7?>
8
1// Пример на Go
2package main
3
4import (
5 "fmt"
6 "net/url"
7)
8
9func main() {
10 urlStr := "https://example.com/path?query=hello world&name=Jürgen"
11 encodedURL := url.QueryEscape(urlStr)
12 fmt.Println(encodedURL)
13 // Изход: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%25C3%25BCrgen
14}
15
1// Пример на Swift
2import Foundation
3
4let url = "https://example.com/path?query=hello world&name=Jürgen"
5if let encodedURL = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) {
6 print(encodedURL)
7 // Изход: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8}
9
1## Пример на R
2url <- "https://example.com/path?query=hello world&name=Jürgen"
3encodedURL <- URLencode(url, reserved = TRUE)
4print(encodedURL)
5## Изход: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
Забележка: Изходът може да варира леко в зависимост от начина, по който всеки език обработва резервираните символи и интервалите (например, кодиране на интервали като %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 адресите ви, подобрявайки съвместимостта и предотвратявайки потенциални грешки или уязвимости в сигурността.
Обратна връзка
Кликнете върху обратната връзка, за да започнете да давате обратна връзка за този инструмент