یک ابزار آنلاین برای فرار از کاراکترهای خاص در یک رشته URL. یک URL وارد کنید و این ابزار آن را با فرار از کاراکترهای خاص کدگذاری میکند و اطمینان حاصل میکند که برای استفاده در برنامههای وب ایمن است.
در دنیای توسعه وب و ارتباطات اینترنتی، URLها (مکاننماهای منبع یکنواخت) نقش مهمی در شناسایی منابع در وب ایفا میکنند. با این حال، URLها محدودیتهایی در مورد کاراکترهایی که میتوانند شامل شوند دارند. برخی کاراکترها معانی خاصی دارند، در حالی که برخی دیگر به دلیل احتمال تفسیر نادرست یا فساد در حین انتقال، برای استفاده در URLها ناامن هستند.
کدگذاری URL، که به عنوان کدگذاری درصدی نیز شناخته میشود، مکانیزمی برای تبدیل کاراکترهای خاص به فرمت قابل انتقال در اینترنت است. این ابزار به شما اجازه میدهد که یک رشته URL را وارد کنید و کاراکترهای خاص را فرار کنید و اطمینان حاصل کنید که URL معتبر است و میتواند به درستی توسط مرورگرها و سرورها تفسیر شود.
کدگذاری URL شامل جایگزینی کاراکترهای ASCII ناامن با یک %
و سپس دو رقم هگزادسیمال است که نمایانگر کد ASCII کاراکتر است. این اطمینان حاصل میکند که اطلاعات بدون تغییر در اینترنت منتقل میشوند.
به عنوان مثال، کاراکتر فضای ' '
با %20
جایگزین میشود.
URLها تنها میتوانند از طریق اینترنت با استفاده از مجموعه کاراکتر ASCII ارسال شوند. از آنجا که URLها اغلب شامل کاراکترهایی خارج از این مجموعه هستند، باید به فرمت ASCII معتبر تبدیل شوند. کدگذاری URL تضمین میکند که کاراکترهای خاص باعث ایجاد اثرات یا خطاهای ناخواسته در درخواستهای وب نشوند.
طبق مشخصات RFC 3986، کاراکترهای زیر در URLها رزرو شدهاند و باید در صورت استفاده به صورت حرفی، کدگذاری درصدی شوند:
:
, /
, ?
, #
, [
, ]
, @
!
, $
, &
, '
, (
, )
, *
, +
, ,
, ;
, =
علاوه بر این، هر کاراکتر غیر ASCII، از جمله کاراکترهای یونیکد، باید کدگذاری شود.
شناسایی کاراکترهای خاص:
رشته URL را تجزیه کرده و کاراکترهایی را که کاراکترهای ASCII غیر محفوظ (حروف، اعداد، -
, .
, _
, ~
) نیستند شناسایی کنید.
تبدیل به کد ASCII: برای هر کاراکتر خاص، کد ASCII یا نقطه کد یونیکد آن را بدست آورید.
تبدیل به دنباله بایت UTF-8 (در صورت لزوم): برای کاراکترهای غیر ASCII، کاراکتر را به یک یا چند بایت با استفاده از کدگذاری UTF-8 تبدیل کنید.
تبدیل به هگزادسیمال: هر بایت را به معادل هگزادسیمال دو رقمی آن تبدیل کنید.
پیشوند با نماد درصد:
هر بایت هگزادسیمال را با یک علامت %
پیشوند کنید.
کاراکتر: ' '
(فضا)
32
20
%20
کاراکتر: 'é'
0xC3 0xA9
%C3%A9
کاراکترهای یونیکد: کاراکترهای غیر ASCII باید در UTF-8 کدگذاری شده و سپس کدگذاری درصدی شوند.
علامتهای درصدی که از قبل کدگذاری شدهاند: علامتهای درصدی که بخشی از کدگذاریهای درصدی هستند نباید دوباره کدگذاری شوند.
کاراکترهای رزرو شده در رشتههای پرس و جو: برخی کاراکترها در رشتههای پرس و جو معانی خاصی دارند و باید کدگذاری شوند تا از تغییر ساختار جلوگیری شود.
کدگذاری 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 به صورت ایمن.
APIها و خدمات وب: اطمینان از اینکه دادههای ارسال شده به APIها به درستی فرمت شدهاند.
بینالمللیسازی: پشتیبانی از URLها با کاراکترهای زبانهای مختلف.
در حالی که کدگذاری 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
یا +
) در هر زبان کمی متفاوت باشد.
کدگذاری و کدگشایی صحیح URL برای امنیت بسیار مهم است:
جلوگیری از حملات تزریقی: کدگذاری ورودیهای کاربر به جلوگیری از اجرای کدهای مخرب کمک میکند و خطراتی مانند اسکریپتنویسی بینسایتی (XSS) و تزریق SQL را کاهش میدهد.
تمامیت داده: اطمینان حاصل میکند که دادهها بدون تغییر یا فساد منتقل میشوند.
رعایت استانداردها: پیروی از استانداردهای کدگذاری از بروز مشکلات بینسیستمی جلوگیری میکند.
کدگذاری URL جنبهای اساسی از توسعه وب و ارتباطات اینترنتی است. با تبدیل کاراکترهای خاص به فرمت ایمن، اطمینان حاصل میکند که URLها به درستی توسط مرورگرها و سرورها تفسیر میشوند و تمامیت و امنیت انتقال داده حفظ میشود. این ابزار یک راه راحت برای فرار از کاراکترهای خاص در URLهای شما فراهم میکند و سازگاری را افزایش داده و از بروز خطاها یا آسیبپذیریهای امنیتی جلوگیری میکند.