Penyandi Rentetan URL
Alat Penyelamat Tali URL
Pengenalan
Dalam bidang pembangunan web dan komunikasi Internet, URL (Penunjuk Sumber Uniform) memainkan peranan penting dalam mengenal pasti sumber di web. Walau bagaimanapun, URL mempunyai sekatan terhadap watak yang boleh mereka mengandungi. Watak tertentu mempunyai makna khas, sementara yang lain tidak selamat untuk digunakan dalam URL kerana kemungkinan salah tafsir atau kerosakan semasa penghantaran.
Penyandian URL, juga dikenali sebagai penyandian peratus, adalah mekanisme untuk menukar watak khas ke dalam format yang boleh dihantar melalui Internet. Alat ini membolehkan anda memasukkan rentetan URL dan menyelamatkan watak khas, memastikan bahawa URL adalah sah dan boleh ditafsirkan dengan betul oleh pelayar web dan pelayan.
Memahami Penyandian URL
Apa itu Penyandian URL?
Penyandian URL melibatkan penggantian watak ASCII yang tidak selamat dengan %
diikuti oleh dua digit heksadesimal yang mewakili kod ASCII watak tersebut. Ia memastikan bahawa maklumat dihantar melalui Internet tanpa pengubahsuaian.
Sebagai contoh, watak ruang ' '
digantikan dengan %20
.
Mengapa Penyandian URL Diperlukan?
URL hanya boleh dihantar melalui Internet menggunakan set watak ASCII. Oleh kerana URL sering mengandungi watak di luar set ini, mereka mesti ditukar ke dalam format ASCII yang sah. Penyandian URL menjamin bahawa watak khas tidak menyebabkan kesan yang tidak diingini atau ralat dalam permintaan web.
Watak yang Perlu Disandikan
Menurut spesifikasi RFC 3986, watak-watak berikut adalah terpelihara dalam URL dan mesti disandi peratus jika mereka hendak digunakan secara literal:
- Pemisah umum:
:
,/
,?
,#
,[
,]
,@
- Pemisah sub:
!
,$
,&
,'
,(
,)
,*
,+
,,
,;
,=
Selain itu, sebarang watak bukan ASCII, termasuk watak dalam Unicode, mesti disandi.
Bagaimana Penyandian URL Berfungsi?
Proses Penyandian
-
Kenal pasti Watak Khas: Analisis rentetan URL dan kenal pasti watak yang bukan watak ASCII yang tidak terpelihara (huruf, angka,
-
,.
,_
,~
). -
Tukar kepada Kod ASCII: Untuk setiap watak khas, peroleh titik kod ASCII atau Unicode.
-
Tukar kepada Urutan Byte UTF-8 (jika perlu): Untuk watak bukan ASCII, sandikan watak tersebut menjadi satu atau lebih bait menggunakan penyandian UTF-8.
-
Tukar kepada Heksadesimal: Tukar setiap bait kepada nilai heksadesimal dua digitnya.
-
Tambahkan Simbol Peratus: Tambah setiap bait heksadesimal dengan tanda
%
.
Contoh Penyandian
-
Watak:
' '
(Ruang)- Kod ASCII:
32
- Heksadesimal:
20
- Disandi URL:
%20
- Kod ASCII:
-
Watak:
'é'
- Penyandian UTF-8:
0xC3 0xA9
- Disandi URL:
%C3%A9
- Penyandian UTF-8:
Kes Khas yang Perlu Dipertimbangkan
-
Watak Unicode: Watak bukan ASCII mesti disandi dalam UTF-8 dan kemudian disandi peratus.
-
Tanda Peratus yang Sudah Disandi: Tanda peratus yang merupakan sebahagian daripada penyandian peratus tidak boleh disandi semula.
-
Watak Terpelihara dalam Rentetan Pertanyaan: Watak tertentu mempunyai makna khas dalam rentetan pertanyaan dan harus disandi untuk mengelakkan mengubah struktur.
Penyahsandian URL
Apa itu Penyahsandian URL?
Penyahsandian URL adalah proses terbalik dari penyandian URL. Ia menukar watak yang disandi peratus kembali ke bentuk asalnya, menjadikan URL boleh dibaca dan ditafsirkan oleh manusia dan sistem.
Proses Penyahsandian
-
Kenal pasti Urutan Penyandian Peratus: Cari semua simbol
%
yang diikuti oleh dua digit heksadesimal dalam rentetan URL. -
Tukar Heksadesimal kepada Byte: Terjemahkan setiap nilai heksadesimal kepada bait yang sepadan.
-
Tukar Byte UTF-8 (jika perlu): Untuk urutan berbilang bait, gabungkan bait tersebut dan nyahsandikan menggunakan penyandian UTF-8 untuk mendapatkan watak asal.
-
Gantikan Urutan yang Disandi: Gantikan urutan yang disandi peratus dengan watak yang disahsandikan.
Contoh Penyahsandian
-
Disandi:
hello%20world
%20
diterjemahkan kepada ruang' '
- Disahsandikan:
hello world
-
Disandi:
J%C3%BCrgen
%C3%A4
diterjemahkan kepada'ü'
dalam UTF-8- Disahsandikan:
Jürgen
Kepentingan Penyahsandian URL
Penyahsandian URL adalah penting semasa memproses input pengguna dari URL, membaca parameter pertanyaan, atau mentafsir data yang diterima dari permintaan web. Ia memastikan bahawa maklumat yang diekstrak dari URL berada dalam bentuk yang betul dan dimaksudkan.
Kes Penggunaan
Pembangunan Web
-
Parameter Pertanyaan: Menyandikan input pengguna dalam parameter pertanyaan untuk mengelakkan ralat atau kerentanan keselamatan.
-
Parameter Jalur: Menyertakan data dinamik dalam jalur URL dengan selamat.
Penghantaran Data
-
API dan Perkhidmatan Web: Memastikan data yang dihantar ke API diformat dengan betul.
-
Internasionalisasi: Menyokong URL dengan watak dari pelbagai bahasa.
Keselamatan
- Mencegah Serangan Suntikan: Menyandikan input untuk mengurangkan risiko skrip silang (XSS) dan serangan suntikan lain.
Alternatif
Walaupun penyandian URL adalah penting, terdapat senario di mana kaedah penyandian lain mungkin lebih sesuai:
-
Penyandian Base64: Digunakan untuk menyandikan data binari dalam URL atau apabila kepadatan maklumat yang lebih tinggi diperlukan.
-
Penyandian UTF-8 tanpa Penyandian Peratus: Sesetengah sistem menggunakan penyandian UTF-8 secara langsung, tetapi ini boleh menyebabkan isu jika tidak ditangani dengan betul.
Pertimbangkan spesifik aplikasi anda untuk memilih kaedah penyandian yang paling sesuai.
Sejarah
Penyandian URL diperkenalkan dengan spesifikasi awal URL dan standard URI (Pengenal Sumber Uniform) pada tahun 1990-an. Keperluan untuk cara yang konsisten untuk menyandikan watak khas timbul daripada sistem dan set watak yang pelbagai yang digunakan di seluruh dunia.
Peristiwa penting termasuk:
-
RFC 1738 (1994): Mendefinisikan URL dan memperkenalkan penyandian peratus.
-
RFC 3986 (2005): Mengemas kini sintaks URI, memperhalusi peraturan untuk penyandian.
Seiring berjalannya waktu, penyandian URL telah menjadi integral kepada teknologi web, memastikan komunikasi yang boleh dipercayai di antara pelbagai sistem dan platform.
Contoh Kod
Berikut adalah contoh cara melakukan penyandian URL dalam pelbagai bahasa pengaturcaraan:
' Contoh 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
' Tangani watak Unicode
EncodedText = EncodedText & "%" & Hex(65536 + CharCode)
Else
EncodedText = EncodedText & "%" & Right("0" & Hex(CharCode), 2)
End If
End Select
Next i
URLEncode = EncodedText
End Function
' Penggunaan:
' =URLEncode("https://example.com/?name=Jürgen")
Nota: Output mungkin berbeza sedikit berdasarkan cara setiap bahasa menangani watak terpelihara dan ruang (contohnya, menyandikan ruang sebagai %20
atau +
).
Diagram SVG Proses Penyandian URL
Pertimbangan Keselamatan
Penyandian dan penyahsandian URL yang betul adalah kritikal untuk keselamatan:
-
Mencegah Serangan Suntikan: Menyandikan input pengguna membantu mencegah kod berniat jahat daripada dilaksanakan, mengurangkan risiko seperti skrip silang (XSS) dan suntikan SQL.
-
Integriti Data: Memastikan bahawa data dihantar tanpa pengubahsuaian atau kerosakan.
-
Pematuhan dengan Standard: Mematuhi standard penyandian mengelakkan isu keserasian antara sistem.
Rujukan
- RFC 3986 - Pengenal Sumber Uniform (URI): https://tools.ietf.org/html/rfc3986
- Apa itu Penyandian URL dan Bagaimana ia berfungsi? https://www.urlencoder.io/learn/
- Penyandian Peratus: https://en.wikipedia.org/wiki/Percent-encoding
- Standard URL: https://url.spec.whatwg.org/
- URI.escape adalah usang: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated
Kesimpulan
Penyandian URL adalah aspek penting dalam pembangunan web dan komunikasi Internet. Dengan menukar watak khas ke dalam format yang selamat, ia memastikan bahawa URL ditafsirkan dengan betul oleh pelayar dan pelayan, mengekalkan integriti dan keselamatan penghantaran data. Alat ini menyediakan cara yang mudah untuk menyelamatkan watak khas dalam URL anda, meningkatkan keserasian dan mencegah potensi ralat atau kerentanan keselamatan.