מקודד מחרוזות 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 בשפות תכנות שונות:
' דוגמת 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://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 שלך, משפר את ההתאמה ומונע שגיאות או פגיעות אבטחה פוטנציאליות.