ממיר מחרוזות URL להמרת תווים מיוחדים באינטרנט
כלי מקוון להמיר תווים מיוחדים במחרוזת URL. הקלד URL, וכלי זה יקודד אותו על ידי המרת תווים מיוחדים, מה שמבטיח שהוא בטוח לשימוש באפליקציות אינטרנט.
מקודד מחרוזות URL
תיעוד
כלי בריחת מחרוזות URL
מבוא
בעולם הפיתוח האינטרנטי ובתקשורת באינטרנט, כתובות 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 ושירותי אינטרנט: הבטחת שהנתונים שנשלחים ל-APIs מעוצבים כראוי.
-
בינלאומיות: תמיכה בכתובות URL עם תווים משפות שונות.
אבטחה
- מניעת התקפות הזרקה: קידוד קלטים כדי להקל על הסיכון של התקפות XSS והתקפות הזרקה אחרות.
חלופות
בעוד שקידוד URL הוא חיוני, ישנם תרחישים שבהם שיטות קידוד אחרות עשויות להיות מתאימות יותר:
-
קידוד Base64: משמש לקידוד נתונים בינאריים בתוך כתובות URL או כאשר נדרשת צפיפות מידע גבוהה יותר.
-
קידוד UTF-8 ללא קידוד באחוזים: חלק מהמערכות משתמשות בקידוד UTF-8 ישירות, אך זה יכול להוביל לבעיות אם לא מטופל כראוי.
שקול את הפרטים של היישום שלך כדי לבחור את שיטת הקידוד המתאימה ביותר.
היסטוריה
קידוד URL הוצג עם המפרטים המוקדמים של כתובת ה-URL וסטנדרטי ה-URI (מזהה משאבים אחידים) בשנות ה-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://he.wikipedia.org/wiki/%D7%A7%D7%99%D7%93%D7%95%D7%A0%D7%99%D7%9D_%D7%91%D7%90%D7%97%D7%95%D7%96
- סטנדרט URL: https://url.spec.whatwg.org/
- URI.escape הוא מיושן: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated
סיכום
קידוד URL הוא היבט חיוני בפיתוח אינטרנט ובתקשורת באינטרנט. על ידי המרת תווים מיוחדים לפורמט בטוח, הוא מבטיח שכתובות URL יתפרשו כראוי על ידי דפדפנים ושרתים, מה שמתחזק את שלמות וביטחון העברת הנתונים. כלי זה מספק דרך נוחה לברוח מתווים מיוחדים בכתובות ה-URL שלך, משפר את ההתאמה ומונע שגיאות או פגיעות אבטחה פוטנציאליות.
משוב
לחץ על הפיצוץ משוב כדי להתחיל לתת משוב על כלי זה