Definisi Query String
Query string adalah bagian dari URL (Uniform Resource Locator) yang berisi data yang dikirimkan ke server web. Bagian ini dimulai setelah tanda tanya (?) dan terdiri dari pasangan kunci-nilai (key-value pairs) yang dipisahkan oleh tanda ampersand (&). Query string berfungsi sebagai mekanisme komunikasi antara klien (browser) dan server untuk memproses permintaan spesifik, seperti pencarian, pemfilteran, atau pelacakan sesi.
Struktur dan Komponen
Struktur dasar sebuah URL yang mengandung query string mengikuti pola: protokol://domain/path?key1=value1&key2=value2. Berikut adalah tabel komponen utama dalam query string:
| Komponen | Fungsi | Contoh |
|---|---|---|
| Tanda Tanya (?) | Pemisah antara path dan query string | ? |
| Key | Nama parameter yang dikirim | search |
| Tanda Sama Dengan (=) | Penghubung antara key dan value | = |
| Value | Data yang dikirimkan | antigravity |
| Ampersand (&) | Pemisah antar pasangan parameter | & |
Aturan Penulisan dan Encoding
Dalam standar RFC 3986, query string tidak boleh mengandung karakter tertentu seperti spasi atau simbol khusus secara langsung. Karakter tersebut harus di-encode menggunakan format URL encoding (percent-encoding). Contoh: spasi diubah menjadi %20 atau +.
Tabel Karakter Khusus
| Karakter Asli | URL Encoded |
|---|---|
| Spasi | %20 |
| Tanda Tanya (?) | %3F |
| Ampersand (&) | %26 |
| Tanda Sama Dengan (=) | %3D |
Implementasi dalam Pemrograman
Dalam pengembangan web, pengambilan data dari query string dilakukan di sisi server atau klien. Berikut adalah contoh implementasi menggunakan JavaScript untuk mengambil parameter dari URL:
// URL: https://example.com?user=antigravity&id=123
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const user = urlParams.get('user'); // Output: "antigravity"
const id = urlParams.get('id'); // Output: "123"Kelebihan dan Kekurangan
Penggunaan query string memiliki dampak signifikan terhadap performa dan keamanan aplikasi web:
- Kelebihan: Memungkinkan bookmarking halaman dengan status spesifik, mudah di-debug, dan tidak memerlukan penyimpanan state di sisi server.
- Kekurangan: Data terlihat jelas di URL (tidak aman untuk informasi sensitif seperti password), panjang URL terbatas pada browser tertentu, dan berpotensi menjadi celah keamanan jika tidak divalidasi (SQL Injection/XSS).
Praktik Terbaik Keamanan
Selalu lakukan sanitasi dan validasi terhadap input yang diterima dari query string. Jangan pernah memasukkan nilai mentah dari query string langsung ke dalam query database atau output HTML tanpa proses escaping untuk mencegah serangan Cross-Site Scripting (XSS) dan SQL Injection.