ابزار آنلاین برای فرار از کاراکترهای خاص در URL
یک ابزار آنلاین برای فرار از کاراکترهای خاص در یک رشته 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، از جمله کاراکترهای یونیکد، باید کدگذاری شود.
کدگذاری URL چگونه کار میکند؟
فرآیند کدگذاری
-
شناسایی کاراکترهای خاص: رشته URL را تجزیه کرده و کاراکترهایی را که کاراکترهای ASCII غیر محفوظ (حروف، اعداد،
-
,.
,_
,~
) نیستند شناسایی کنید. -
تبدیل به کد ASCII: برای هر کاراکتر خاص، کد ASCII یا نقطه کد یونیکد آن را بدست آورید.
-
تبدیل به دنباله بایت UTF-8 (در صورت لزوم): برای کاراکترهای غیر ASCII، کاراکتر را به یک یا چند بایت با استفاده از کدگذاری UTF-8 تبدیل کنید.
-
تبدیل به هگزادسیمال: هر بایت را به معادل هگزادسیمال دو رقمی آن تبدیل کنید.
-
پیشوند با نماد درصد: هر بایت هگزادسیمال را با یک علامت
%
پیشوند کنید.
مثال کدگذاری
-
کاراکتر:
' '
(فضا)- کد ASCII:
32
- هگزادسیمال:
20
- کدگذاری URL:
%20
- کد ASCII:
-
کاراکتر:
'é'
- کدگذاری UTF-8:
0xC3 0xA9
- کدگذاری URL:
%C3%A9
- کدگذاری UTF-8:
موارد حاشیهای که باید در نظر گرفته شوند
-
کاراکترهای یونیکد: کاراکترهای غیر 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 (شناساییکننده منبع یکنواخت) در دهه 1990 معرفی شد. نیاز به یک روش سازگار برای کدگذاری کاراکترهای خاص از تنوع سیستمها و مجموعههای کاراکتری که در سراسر جهان استفاده میشدند ناشی میشد.
نقاط عطف کلیدی شامل:
-
RFC 1738 (1994): URLها را تعریف کرده و کدگذاری درصدی را معرفی کرد.
-
RFC 3986 (2005): نحو URI را بهروزرسانی کرده و قوانین کدگذاری را اصلاح کرد.
با گذشت زمان، کدگذاری URL به جزء جداییناپذیر فناوریهای وب تبدیل شده است و ارتباطات قابل اعتماد بین سیستمها و پلتفرمهای مختلف را تضمین میکند.
مثالهای کد
در اینجا مثالهایی از نحوه انجام کدگذاری URL در زبانهای برنامهنویسی مختلف آورده شده است:
1' مثال 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 ' مدیریت کاراکترهای یونیکد
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های شما فراهم میکند و سازگاری را افزایش داده و از بروز خطاها یا آسیبپذیریهای امنیتی جلوگیری میکند.
بازخورد
برای شروع دادن بازخورد درباره این ابزار، روی توست بازخورد کلیک کنید