Traffine I/O

Bahasa Indonesia

2023-03-31

Encoding Permintaan Web

Jenis Encoding Permintaan Web

Dalam dunia pengembangan web, encoding memainkan peran penting dalam memastikan data ditransmisikan dan diproses dengan aman dan efisien. Artikel ini memberikan gambaran mendalam tentang berbagai jenis encoding yang digunakan dalam permintaan web, mencakup topik seperti encoding URL, HTML, JSON, Base64, dan encoding data formulir multipart. Dengan memahami jenis encoding ini, pengembang dapat membangun aplikasi web yang lebih kuat dan aman.

Encoding sangat penting karena beberapa alasan:

  • Kompatibilitas
    Sistem dan bahasa pemrograman yang berbeda dapat menafsirkan data dengan cara yang berbeda, sehingga encoding menyediakan cara standar untuk merepresentasikan data yang dapat dipahami oleh berbagai platform.

  • Keamanan
    Encoding yang tepat membantu melindungi terhadap kerentanan keamanan, seperti serangan cross-site scripting (XSS) atau injeksi SQL. Dengan melakukan encoding pada data, pengembang dapat mengurangi risiko serangan yang memasukkan kode berbahaya ke dalam aplikasi mereka.

  • Integritas Data
    Encoding memastikan bahwa data tetap utuh dan tidak diubah ketika ditransmisikan antara sistem, yang sangat penting untuk menjaga integritas data.

  • Keterbacaan
    Beberapa jenis encoding, seperti JSON atau XML, membuat data lebih mudah dibaca dan dikelola, memungkinkan pengembang untuk bekerja dengan struktur data yang kompleks dengan lebih efisien.

Artikel ini akan menjelaskan tentang jenis encoding berikut:

  • URL Encoding
  • HTML Encoding
  • JSON Encoding
  • Base64 Encoding
  • Data Formulir Multipart Encoding

HTML Encoding

HTML encoding, juga dikenal sebagai HTML entity encoding atau karakter escaping, adalah metode yang digunakan untuk merepresentasikan karakter-karakter tertentu dalam dokumen HTML yang memiliki arti khusus atau tidak diperbolehkan dalam konten teks dokumen. Tujuan dari HTML encoding adalah untuk memastikan bahwa karakter-karakter tersebut ditampilkan dengan benar di browser dan tidak mengganggu markup HTML.

Dalam HTML encoding, karakter-karakter khusus diganti dengan referensi karakter, yang dapat berupa named entities (seperti < untuk tanda kurang dari) atau numeric entities (seperti < untuk tanda kurang dari).

HTML encoding digunakan dalam skenario berikut:

  • Karakter-karakter Reservasi
    Beberapa karakter memiliki makna khusus dalam dokumen HTML, seperti tanda kurang dari (<), tanda lebih dari (>), atau ampersand (&). Jika Anda perlu menyertakan salah satu karakter ini sebagai bagian dari konten teks, maka harus di-HTML-encoded.

  • Karakter-karakter Tidak Aman
    Beberapa karakter, seperti karakter non-printable atau karakter dengan implikasi keamanan potensial (misalnya tanda kutip atau kurung sudut), dapat menyebabkan masalah saat digunakan dalam dokumen HTML. HTML encoding memastikan bahwa karakter-karakter ini ditampilkan dengan aman.

  • Karakter-karakter Non-ASCII
    HTML encoding dapat digunakan untuk merepresentasikan karakter-karakter non-ASCII (misalnya karakter dari bahasa selain Bahasa Inggris) dalam dokumen HTML. Ini memastikan bahwa karakter-karakter tersebut ditampilkan dengan benar, terlepas dari set karakter atau encoding yang digunakan oleh browser.

  • HTML Encoding dalam Praktek
    Untuk menggunakan HTML encoding, ikuti langkah-langkah berikut:

  1. Identifikasi karakter-karakter dalam dokumen HTML yang perlu di-encode.
  2. Ganti setiap karakter khusus dengan referensi karakter yang sesuai, baik itu named entity atau numeric entity.

Sebagai contoh, pertimbangkan potongan HTML berikut yang mengandung tanda kurang dari:

<p>The value of x is less than 10.</p>

To HTML-encode the less-than sign, you would replace it with the named entity &lt;:

<p>The value of x is &lt; 10.</p>

Kebanyakan bahasa pemrograman dan kerangka web menyediakan fungsi atau perpustakaan bawaan untuk melakukan HTML encoding dan decoding. Alat-alat ini dapat membantu Anda memastikan bahwa dokumen HTML Anda ditampilkan dengan benar di browser web dan lebih sedikit rentan terhadap risiko keamanan, seperti serangan cross-site scripting (XSS).

URL Encoding

URL encoding, juga dikenal sebagai percent encoding, adalah metode yang digunakan untuk merepresentasikan karakter-karakter tertentu dalam URL yang mungkin memiliki arti khusus atau tidak diperbolehkan dalam URL. Tujuan dari URL encoding adalah untuk memastikan bahwa URL dapat ditransmisikan dengan aman dan diinterpretasikan dengan benar oleh browser web dan server.

Dalam URL encoding, karakter-karakter yang tidak diperbolehkan atau reservasi diganti dengan tanda persen (%) diikuti oleh dua digit heksadesimal yang merepresentasikan nilai ASCII dari karakter tersebut. Sebagai contoh, karakter spasi akan di-encode sebagai %20, dan tanda at (@) akan di-encode sebagai %40.

URL encoding digunakan dalam skenario berikut:

  • Karakter-karakter Reservasi
    Beberapa karakter memiliki makna khusus dalam URL, seperti slash (/), tanda tanya (?), atau ampersand (&). Jika Anda perlu menyertakan salah satu karakter ini sebagai bagian dari nilai parameter atau segmen path, maka harus di-URL-encoded.

  • Karakter-karakter Tidak Aman
    Beberapa karakter, seperti spasi atau karakter non-printable, dapat menyebabkan masalah saat digunakan dalam URL. URL encoding memastikan bahwa karakter-karakter ini ditransmisikan dengan aman.

  • Karakter-karakter Non-ASCII
    URL encoding digunakan untuk merepresentasikan karakter-karakter non-ASCII (misalnya karakter dari bahasa selain Bahasa Inggris) dalam URL. Ini memastikan bahwa URL tetap kompatibel dengan set karakter terbatas yang diperbolehkan dalam URL standar.

URL Encoding dalam Praktek

Untuk menggunakan URL encoding, ikuti langkah-langkah berikut:

  1. Identifikasi karakter-karakter dalam URL yang perlu di-encode.
  2. Ganti setiap karakter yang tidak diperbolehkan atau reservasi dengan tanda persen (%) diikuti oleh dua digit heksadesimal yang merepresentasikan nilai ASCII dari karakter tersebut.

Sebagai contoh, pertimbangkan URL berikut yang mengandung query string dengan karakter spasi:

https://example.com/search?query=hello world

Untuk URL-encode karakter spasi, Anda akan menggantinya dengan %20:

https://example.com/search?query=hello%20world

Kebanyakan bahasa pemrograman dan kerangka web menyediakan dukungan bawaan atau perpustakaan untuk bekerja dengan data yang di-URL-encode. Saat mengirimkan data yang di-URL-encode dalam permintaan web, penting untuk memformat data dengan benar dan menetapkan header yang sesuai, seperti header Content-Type, untuk memastikan bahwa server tahu bagaimana menginterpretasikan data.

Base64 Encoding

Base64 encoding adalah metode untuk mengubah data biner menjadi representasi string menggunakan kumpulan 64 karakter ASCII yang berbeda. Skema encoding ini dirancang untuk memungkinkan data biner, seperti gambar atau file, untuk ditransmisikan melalui media yang dirancang untuk menangani data teks, seperti email atau HTTP.

Base64 encoding bekerja dengan mengambil tiga byte data biner dan mengonversinya menjadi empat karakter ASCII. Hasil string tersebut terdiri hanya dari huruf besar dan kecil, angka, dan dua karakter tambahan (biasanya + dan /) untuk membuat 64 karakter lengkap.

Base64 encoding umumnya digunakan dalam skenario berikut:

  • Menggabungkan Data Biner
    Base64 encoding memungkinkan Anda untuk menggabungkan data biner, seperti gambar atau file, dalam format berbasis teks seperti JSON, XML, atau HTML. Hal ini dapat berguna untuk mengirimkan jumlah data biner yang kecil dalam muatan yang lebih besar atau untuk menyertakan gambar inline dalam dokumen HTML.

  • Data URI
    Data URI adalah skema URI yang memungkinkan Anda untuk menyertakan data secara inline dalam halaman web seolah-olah mereka adalah resource eksternal. Base64 encoding sering digunakan untuk membuat data URI untuk gambar, stylesheet, atau script, yang dapat mengurangi jumlah permintaan HTTP yang diperlukan untuk memuat halaman web.

  • Pembuatan Token Aman
    Base64 encoding dapat digunakan untuk membuat token atau identifikasi yang aman, yang dapat ditransmisikan dengan aman melalui internet. Ketika digabungkan dengan hashing atau enkripsi kriptografis, token yang di-Base64-encoded dapat digunakan untuk tujuan autentikasi atau otorisasi yang aman.

Base64 Encoding dalam Praktek

Berikut ini adalah contoh string yang di-Base64-encoded yang merepresentasikan data biner kecil:

aGVsbG8gd29ybGQ=

String yang di-encode ini merepresentasikan data biner untuk teks ASCII "hello world". Untuk mendekode string yang di-Base64-encoded kembali menjadi data biner, Anda akan membalikkan proses ini, mengonversi empat karakter ASCII kembali menjadi tiga byte data biner.

Saat menggunakan Base64 encoding untuk menyertakan data biner dalam muatan yang lebih besar, umumnya disertakan metadata untuk menjelaskan data yang di-encode. Sebagai contoh, saat menyertakan gambar dalam dokumen HTML menggunakan data URI, Anda akan menyertakan tipe MIME gambar:

<img src="data:image/png;base64,iVBORw0KGg..." alt="An example image" />

Pada contoh ini, atribut src dari tag <img> berisi data URI dengan tipe MIME image/png, diikuti oleh data biner gambar yang di-Base64-encoded.

Kebanyakan bahasa pemrograman menyediakan dukungan bawaan atau perpustakaan untuk bekerja dengan data yang di-Base64-encoded. Saat mengirimkan data yang di-Base64-encoded dalam permintaan web, penting untuk memformat data dengan benar dan menetapkan header yang sesuai, seperti header Content-Type, untuk memastikan bahwa server tahu bagaimana menginterpretasikan data.

JSON Encoding

JSON (JavaScript Object Notation) Encoding adalah format pertukaran data yang ringan dan berbasis teks yang mudah dibaca dan ditulis oleh manusia dan mudah diproses dan dibuat oleh mesin. JSON digunakan untuk mengirimkan data sebagai representasi string dari objek data terstruktur, seperti array dan pasangan kunci-nilai.

Enkoding JSON semakin populer untuk layanan web dan API, karena menawarkan cara yang lebih ringkas dan efisien untuk mengirimkan data dibandingkan dengan XML atau bahasa markup lainnya. Selain itu, JSON didukung secara native oleh JavaScript, sehingga menjadi pilihan ideal untuk aplikasi web dan kerangka kerja front-end modern.

Enkoding JSON umumnya digunakan dalam beberapa skenario berikut:

  • Layanan Web dan API
    Enkoding JSON sering digunakan sebagai format data default untuk layanan web dan API, karena dapat dengan mudah mewakili struktur data yang kompleks, didukung secara luas oleh bahasa pemrograman, dan lebih efisien daripada XML.

  • Permintaan AJAX
    Saat mengirimkan data antara klien dan server dalam aplikasi web, enkoding JSON menjadi pilihan populer untuk permintaan AJAX. Hal ini karena JSON dapat dengan mudah diproses oleh JavaScript dan bahasa sisi klien lainnya, sehingga mudah untuk bekerja dengan data dalam aplikasi web.

  • File Konfigurasi
    Enkoding JSON juga dapat digunakan untuk menyimpan data konfigurasi dalam format yang mudah dibaca oleh manusia. Banyak aplikasi dan alat modern menggunakan JSON sebagai format file konfigurasinya, berkat kesederhanaan dan kemudahan penggunaannya.

JSON Encoding dalam Praktik

Untuk menggunakan enkoding JSON, struktur data direpresentasikan menggunakan aturan sintaks tertentu, seperti:

  • Objek dibungkus dalam kurung kurawal ({}) dan terdiri dari pasangan kunci-nilai.
  • Array dibungkus dalam kurung siku ([]) dan berisi daftar nilai.
  • Kunci harus berupa string dan dibungkus dalam tanda kutip ganda.
  • Nilai dapat berupa string, angka, objek, array, atau kata kunci khusus true, false, dan null.

Berikut contoh dari objek yang di-enkoding dalam format JSON:

{
  "firstName": "John",
  "lastName": "Doe",
  "age": 30,
  "email": "john.doe@example.com",
  "address": {
    "street": "123 Main St",
    "city": "New York",
    "state": "NY",
    "postalCode": "10001"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "555-555-1234"
    },
    {
      "type": "work",
      "number": "555-555-5678"
    }
  ]
}

Dalam contoh ini, terdapat objek JSON yang mewakili seseorang, dengan berbagai properti seperti nama, usia, dan informasi kontak. Struktur data mencakup objek dan array bersarang, menunjukkan fleksibilitas dari enkoding JSON.

Sebagian besar bahasa pemrograman menyediakan dukungan built-in atau pustaka untuk bekerja dengan data JSON. Ketika mengirimkan data yang di-enkoding dalam format JSON dalam permintaan web, penting untuk mengatur header Content-Type menjadi application/json sehingga server tahu cara menginterpretasikan data tersebut.

Multipart Form Data Encoding

Encoding multipart form data adalah metode yang digunakan untuk mengirimkan data biner atau jumlah teks yang besar dalam permintaan HTTP, biasanya dalam konteks pengiriman formulir. Tipe enkoding ini memungkinkan beberapa bagian atau segmen data dikirimkan dalam satu permintaan, masing-masing dengan tipe konten dan metadata yang berbeda. Enkoding ini sangat berguna untuk mengunggah file atau saat mengirimkan campuran data teks dan biner dalam satu permintaan.

Enkoding multipart form data paling sering digunakan dalam beberapa skenario berikut:

  • Pengunggahan File
    Ketika pengguna perlu mengunggah file, seperti gambar atau dokumen, ke server melalui formulir web, enkoding multipart form data menjadi pilihan yang direkomendasikan. Ini memungkinkan konten biner file dikirimkan bersama dengan semua bidang formulir lainnya.

  • Data Teks Besar
    Jika Anda perlu mengirimkan sejumlah besar data teks dalam satu permintaan, enkoding multipart form data dapat lebih efisien daripada menggunakan tipe enkoding lain, seperti enkoding URL atau JSON.

  • Jenis Konten Campuran
    Jika sebuah formulir berisi campuran bidang teks, pengunggahan file, dan jenis data lainnya, enkoding multipart form data memungkinkan Anda mengirimkan semua data dalam satu permintaan, sambil menjaga setiap bagian terpisah dan dapat diidentifikasi.

Multipart Form Data Encoding dalam Praktik

Ketika menggunakan enkoding multipart form data, setiap bagian permintaan dipisahkan oleh string pembatas yang unik. String pembatas ini biasanya dihasilkan oleh klien (misalnya, peramban web) dan dimasukkan dalam header Content-Type permintaan.

Permintaan multipart form data yang tipikal mungkin terlihat seperti ini:

bash

POST /upload HTTP/1.1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary12345

------WebKitFormBoundary12345
Content-Disposition: form-data; name="username"

john_doe
------WebKitFormBoundary12345
Content-Disposition: form-data; name="profile_picture"; filename="profile.jpg"
Content-Type: image/jpeg

(binary content of the image)
------WebKitFormBoundary12345--

Dalam contoh ini, permintaan mengirimkan formulir dengan dua bidang: bidang teks bernama "username" dan bidang pengunggahan file bernama "profile_picture". String pembatasnya adalah ----WebKitFormBoundary12345, dan setiap bagian dipisahkan oleh string pembatas ini. String pembatas akhir memiliki dua tanda hubung tambah ekstra untuk menandakan akhir permintaan.

Untuk bekerja dengan enkoding multipart form data dalam aplikasi Anda, sebagian besar bahasa pemrograman dan kerangka web menyediakan fungsi atau pustaka bawaan untuk menangani enkoding dan dekoding tipe data ini. Alat-alat ini akan memparsir permintaan, memisahkan setiap bagian, dan membuat data tersedia untuk diproses.

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!