Pengkodean String URL
Alat Penerjemah URL String
Pendahuluan
Dalam dunia pengembangan web dan komunikasi Internet, URL (Uniform Resource Locators) memainkan peran penting dalam mengidentifikasi sumber daya di web. Namun, URL memiliki batasan pada karakter yang dapat mereka miliki. Karakter tertentu memiliki arti khusus, sementara yang lain tidak aman untuk digunakan dalam URL karena kemungkinan salah tafsir atau korupsi selama transmisi.
Pengkodean URL, juga dikenal sebagai percent-encoding, adalah mekanisme untuk mengonversi karakter khusus menjadi format yang dapat ditransmisikan melalui Internet. Alat ini memungkinkan Anda untuk memasukkan string URL dan menghindari karakter khusus, memastikan bahwa URL tersebut valid dan dapat diinterpretasikan dengan benar oleh browser web dan server.
Memahami Pengkodean URL
Apa itu Pengkodean URL?
Pengkodean URL melibatkan penggantian karakter ASCII yang tidak aman dengan %
diikuti oleh dua digit heksadesimal yang mewakili kode ASCII karakter tersebut. Ini memastikan bahwa informasi ditransmisikan melalui Internet tanpa perubahan.
Sebagai contoh, karakter spasi ' '
diganti dengan %20
.
Mengapa Pengkodean URL Diperlukan?
URL hanya dapat dikirim melalui Internet menggunakan set karakter ASCII. Karena URL sering mengandung karakter di luar set ini, mereka harus dikonversi menjadi format ASCII yang valid. Pengkodean URL menjamin bahwa karakter khusus tidak menyebabkan efek yang tidak diinginkan atau kesalahan dalam permintaan web.
Karakter yang Perlu Dikodekan
Menurut spesifikasi RFC 3986, karakter-karakter berikut adalah yang dicadangkan dalam URL dan harus dikodekan persen jika mereka akan digunakan secara literal:
- Delimiter umum:
:
,/
,?
,#
,[
,]
,@
- Sub-delimiter:
!
,$
,&
,'
,(
,)
,*
,+
,,
,;
,=
Selain itu, karakter non-ASCII, termasuk karakter dalam Unicode, harus dikodekan.
Bagaimana Pengkodean URL Bekerja?
Proses Pengkodean
-
Identifikasi Karakter Khusus: Analisis string URL dan identifikasi karakter yang bukan karakter ASCII yang tidak dicadangkan (huruf, angka,
-
,.
,_
,~
). -
Konversi ke Kode ASCII: Untuk setiap karakter khusus, dapatkan kode titik ASCII atau Unicode-nya.
-
Konversi ke Urutan Byte UTF-8 (jika perlu): Untuk karakter non-ASCII, kodifikasi karakter menjadi satu atau lebih byte menggunakan pengkodean UTF-8.
-
Konversi ke Heksadesimal: Konversi setiap byte ke nilai heksadesimal dua digitnya.
-
Tambahkan Simbol Persen: Tambahkan simbol
%
di depan setiap byte heksadesimal.
Contoh Pengkodean
-
Karakter:
' '
(Spasi)- Kode ASCII:
32
- Heksadesimal:
20
- URL Dikodekan:
%20
- Kode ASCII:
-
Karakter:
'é'
- Pengkodean UTF-8:
0xC3 0xA9
- URL Dikodekan:
%C3%A9
- Pengkodean UTF-8:
Kasus Tepi yang Perlu Dipertimbangkan
-
Karakter Unicode: Karakter non-ASCII harus dikodekan dalam UTF-8 dan kemudian dikodekan persen.
-
Tanda Persen yang Sudah Dikodekan: Tanda persen yang merupakan bagian dari pengkodean persen tidak boleh dikodekan ulang.
-
Karakter Cadangan dalam String Kuery: Karakter tertentu memiliki arti khusus dalam string kuery dan harus dikodekan untuk mencegah perubahan struktur.
Dekode URL
Apa itu Dekode URL?
Dekode URL adalah proses kebalikan dari pengkodean URL. Ini mengonversi karakter yang dikodekan persen kembali ke bentuk aslinya, membuat URL dapat dibaca dan diinterpretasikan oleh manusia dan sistem.
Proses Dekode
-
Identifikasi Urutan Pengkodean Persen: Temukan semua simbol
%
diikuti oleh dua digit heksadesimal dalam string URL. -
Konversi Heksadesimal ke Byte: Terjemahkan setiap nilai heksadesimal ke byte yang sesuai.
-
Dekode Byte UTF-8 (jika perlu): Untuk urutan multi-byte, gabungkan byte dan dekode menggunakan pengkodean UTF-8 untuk mendapatkan karakter asli.
-
Ganti Urutan yang Dikodekan: Ganti urutan yang dikodekan persen dengan karakter yang didekodekan.
Contoh Dekode
-
Dikodekan:
hello%20world
%20
diterjemahkan menjadi spasi' '
- Didekodekan:
hello world
-
Dikodekan:
J%C3%BCrgen
%C3%A4
diterjemahkan menjadi'ü'
dalam UTF-8- Didekodekan:
Jürgen
Pentingnya Dekode URL
Dekode URL penting saat memproses input pengguna dari URL, membaca parameter kuery, atau menafsirkan data yang diterima dari permintaan web. Ini memastikan bahwa informasi yang diambil dari URL berada dalam bentuk yang benar dan dimaksudkan.
Kasus Penggunaan
Pengembangan Web
-
Parameter Kuery: Mengkodekan input pengguna dalam parameter kuery untuk mencegah kesalahan atau kerentanan keamanan.
-
Parameter Jalur: Menyertakan data dinamis dengan aman dalam jalur URL.
Transmisi Data
-
API dan Layanan Web: Memastikan data yang dikirim ke API diformat dengan benar.
-
Internasionalisasi: Mendukung URL dengan karakter dari berbagai bahasa.
Keamanan
- Mencegah Serangan Penyisipan: Mengkodekan input untuk mengurangi risiko cross-site scripting (XSS) dan serangan penyisipan lainnya.
Alternatif
Meskipun pengkodean URL sangat penting, ada skenario di mana metode pengkodean lain mungkin lebih tepat:
-
Pengkodean Base64: Digunakan untuk mengkodekan data biner dalam URL atau ketika diperlukan kepadatan informasi yang lebih tinggi.
-
Pengkodean UTF-8 tanpa Pengkodean Persen: Beberapa sistem menggunakan pengkodean UTF-8 secara langsung, tetapi ini dapat menyebabkan masalah jika tidak ditangani dengan benar.
Pertimbangkan spesifikasi aplikasi Anda untuk memilih metode pengkodean yang paling sesuai.
Sejarah
Pengkodean URL diperkenalkan dengan spesifikasi awal URL dan standar URI (Uniform Resource Identifier) pada tahun 1990-an. Kebutuhan akan cara yang konsisten untuk mengkodekan karakter khusus muncul dari sistem dan set karakter yang beragam digunakan di seluruh dunia.
Tonggak sejarah kunci meliputi:
-
RFC 1738 (1994): Mendefinisikan URL dan memperkenalkan pengkodean persen.
-
RFC 3986 (2005): Memperbarui sintaks URI, menyempurnakan aturan untuk pengkodean.
Seiring waktu, pengkodean URL telah menjadi bagian integral dari teknologi web, memastikan komunikasi yang dapat diandalkan di berbagai sistem dan platform.
Contoh Kode
Berikut adalah contoh cara melakukan pengkodean URL dalam berbagai bahasa pemrograman:
' 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 karakter 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")
Catatan: Output mungkin sedikit bervariasi berdasarkan bagaimana masing-masing bahasa menangani karakter cadangan dan spasi (misalnya, mengkodekan spasi sebagai %20
atau +
).
Diagram SVG dari Proses Pengkodean URL
Pertimbangan Keamanan
Pengkodean dan dekode URL yang tepat sangat penting untuk keamanan:
-
Mencegah Serangan Penyisipan: Mengkodekan input pengguna membantu mencegah kode berbahaya dieksekusi, mengurangi risiko seperti cross-site scripting (XSS) dan injeksi SQL.
-
Integritas Data: Memastikan bahwa data ditransmisikan tanpa perubahan atau korupsi.
-
Kepatuhan terhadap Standar: Mematuhi standar pengkodean menghindari masalah interoperabilitas antara sistem.
Referensi
- RFC 3986 - Uniform Resource Identifier (URI): https://tools.ietf.org/html/rfc3986
- Apa itu Pengkodean URL dan Bagaimana Cara Kerjanya? https://www.urlencoder.io/learn/
- Pengkodean Persen: https://en.wikipedia.org/wiki/Percent-encoding
- Standar URL: https://url.spec.whatwg.org/
- URI.escape sudah usang: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated
Kesimpulan
Pengkodean URL adalah aspek penting dari pengembangan web dan komunikasi Internet. Dengan mengonversi karakter khusus menjadi format yang aman, ini memastikan bahwa URL diinterpretasikan dengan benar oleh browser dan server, menjaga integritas dan keamanan transmisi data. Alat ini menyediakan cara yang nyaman untuk menghindari karakter khusus dalam URL Anda, meningkatkan kompatibilitas dan mencegah kesalahan atau kerentanan keamanan yang potensial.