Validasi Input dan Pengodean Output
Validasi semua input di sisi server, kodekan output sesuai konteksnya, dan cegah injeksi.
Validasi Input dan Pengodean Output adalah pelajaran Cyber Security Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cyber Security Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cyber Security Academy mencakup 4 pelajaran total.
Mengapa Validasi Masukan Penting
Kerentanan injeksi — SQL, perintah, LDAP, XPath, dan lainnya — muncul ketika masukan yang tidak tepercaya ditafsirkan sebagai kode. Validasi masukan memastikan data sesuai dengan jenis, panjang, dan format yang diharapkan sebelum diproses, disimpan, atau dikembalikan.
Validasi Daftar Izinkan vs Daftar Tolak
Validasi daftar izinkan (daftar putih) menentukan apa yang DAPAT diterima: hanya karakter alfanumerik, hanya bilangan bulat dalam rentang 1-100, hanya format alamat surel yang valid. Validasi daftar tolak (daftar hitam) berupaya memblokir masukan buruk yang telah diketahui dan selalu tidak lengkap. Utamakan daftar izinkan.
Validasi di Sisi Server
Validasi di sisi klien meningkatkan pengalaman pengguna, tetapi tidak memberikan keamanan sama sekali — penyerang dapat melewatinya dengan mudah menggunakan alat pengembang peramban atau curl. Selalu lakukan validasi di sisi server. Sisi klien adalah bentuk kemudahan; sisi server adalah kontrol keamanan.
Validasi Masukan untuk Berbagai Jenis Data
Angka: periksa jenis dan rentang. Teks: periksa panjang dan kumpulan karakter. Tanggal: uraikan secara ketat, lalu periksa rentang. Berkas: periksa ekstensi DAN byte ajaib/jenis MIME — jangan pernah mempercayai ekstensi saja. URL: uraikan dan validasi komponen skema, host, dan jalur.
Kueri Berparameter Mencegah SQLi
Keluaran paling penting dari validasi masukan untuk basis data adalah jangan pernah menggabungkan masukan pengguna ke dalam SQL. Gunakan kueri berparameter (pernyataan siap pakai) ketika masukan pengguna diteruskan sebagai parameter, bukan disisipkan ke dalam string query.
// WRONG:
const q = "SELECT * FROM users WHERE name = '" + name + "'";
// RIGHT:
const q = "SELECT * FROM users WHERE name = $1";
await client.query(q, [name]);Konteks Pengodean Keluaran
String yang sama memerlukan pengodean berbeda bergantung pada konteksnya. Isi HTML: lakukan pengodean HTML (< > &). Atribut HTML: pengodean atribut HTML. JavaScript: lakukan pelolosan JS. Parameter URL: lakukan pengodean URL (pengodean persen). Penggunaan pengodean yang salah menciptakan celah yang dapat dieksploitasi penyerang.
Pengodean HTML untuk Melawan XSS
Jangan pernah memasukkan data pengguna langsung ke HTML. Gunakan mesin templat atau pustaka yang secara otomatis melakukan pelolosan HTML. Dalam React, {value} aman; dangerouslySetInnerHTML melewati pelolosan. Dalam Django, templat melakukan pelolosan otomatis kecuali Anda menggunakan filter safe secara eksplisit.
Pengodean dalam Konteks JavaScript
Saat memasukkan data ke dalam JavaScript (misalnya, variabel yang diinisialisasi dengan data pengguna), pengodean HTML tidak cukup. Gunakan pengodean JSON: JSON.stringify(value). Ini mencegah data keluar dari konteks literal string JS.
Pengodean URL
Data yang diberikan pengguna dan dimasukkan ke URL harus dikodekan persen menggunakan encodeURIComponent() (JS) atau urllib.parse.quote() (Python). Data yang tidak dikodekan dapat memanipulasi struktur URL, sehingga menyebabkan pengalihan terbuka atau traversal jalur.
Kebijakan Keamanan Konten sebagai Pertahanan Berlapis
CSP menambahkan baris pertahanan kedua terhadap XSS. CSP ketat yang menggunakan nonce mencegah eksekusi skrip sebaris meskipun payload XSS telah disisipkan, karena peramban menolak menjalankan skrip tanpa atribut nonce yang benar.
Pencegahan XSS Berbasis DOM
XSS DOM terjadi ketika JavaScript membaca dari sumber yang dikendalikan penyerang (location.hash, document.URL, cookie) dan menulis ke tujuan berbahaya (innerHTML, document.write, eval). Audit semua aliran data dari API peramban ke tujuan DOM menggunakan alat analisis statis.
Pemeriksaan Pengetahuan
Mengapa validasi masukan di sisi server penting meskipun validasi di sisi klien telah diterapkan?
Ringkasan
Validasi masukan (daftar izinkan, pemeriksaan jenis, batas panjang) yang dipadukan dengan pengodean keluaran yang peka terhadap konteks (HTML, JS, URL, dan parameterisasi SQL) merupakan pertahanan utama terhadap serangan injeksi dan XSS. Keduanya harus diterapkan di sisi server tanpa pengecualian.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Validasi Input dan Pengodean Output” gratis?
Ya — teks lengkap “Validasi Input dan Pengodean Output” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cyber Security Academy, upgrade ke CoddyKit PRO. Kursus Cyber Security Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Validasi Input dan Pengodean Output”?
Validasi semua input di sisi server, kodekan output sesuai konteksnya, dan cegah injeksi. Kamu berlatih Cyber Security Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Cyber Security Academy?
Tidak diperlukan pengalaman sebelumnya. Cyber Security Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Validasi Input dan Pengodean Output” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Cyber Security Academy ini?
Ya. Setiap pelajaran Cyber Security Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Validasi Input dan Pengodean Output
- Manajemen Dependensi yang Aman
- OWASP ASVS: Standar Verifikasi Keamanan Aplikasi
- Teknik Peninjauan Kode yang Aman