Cyber Security Academy · Pelajaran

Pengesahan Input dan Pengekodan Output

Sahkan semua input di sisi pelayan, kodkan output dalam konteks yang betul dan cegah suntikan.

Pelajaran 1 daripada 413 langkah

Pengesahan Input dan Pengekodan Output ialah pelajaran Cyber Security Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Cyber Security Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Cyber Security Academy merangkumi sejumlah 4 pelajaran.

Mengapa Pengesahan Masukan Penting

Kerentanan suntikan — SQL, arahan, LDAP, XPath dan lain-lain — berlaku apabila masukan yang tidak dipercayai ditafsirkan sebagai kod. Pengesahan masukan memastikan data mematuhi jenis, panjang dan format yang dijangka sebelum diproses, disimpan atau dikembalikan.

Pengesahan Senarai Benarkan berbanding Senarai Tolak

Pengesahan senarai benarkan (senarai putih) mentakrifkan perkara yang IS boleh diterima: hanya aksara abjad angka, hanya integer dalam julat 1-100, hanya format e-mel yang sah. Senarai tolak (senarai hitam) cuba menyekat masukan buruk yang diketahui dan sentiasa tidak lengkap. Utamakan senarai benarkan.

Pengesahan pada Sisi Pelayan

Pengesahan pada sisi klien meningkatkan pengalaman pengguna tetapi tidak memberikan keselamatan langsung — penyerang boleh memintasnya dengan mudah menggunakan alat pembangun pelayar atau curl. Sentiasa lakukan pengesahan pada sisi pelayan. Pengesahan pada sisi klien ialah kemudahan; pengesahan pada sisi pelayan ialah kawalan keselamatan.

Pengesahan Masukan untuk Jenis Data Berbeza

Nombor: semak jenis dan julat. Rentetan: semak panjang dan set aksara. Tarikh: hurai dengan ketat dan semak julat. Fail: semak sambungan AND bait ajaib/jenis MIME — jangan sesekali mempercayai sambungan sahaja. URL: hurai dan sahkan skema, hos dan komponen laluan.

Pertanyaan Berparameter Mencegah Suntikan SQL

Hasil paling penting pengesahan masukan untuk pangkalan data ialah jangan sesekali menggabungkan masukan pengguna ke dalam SQL. Gunakan pertanyaan berparameter (pernyataan tersedia), yang menghantar masukan pengguna sebagai parameter, bukan menyisipkannya ke dalam rentetan 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 Pengekodan Keluaran

Rentetan yang sama memerlukan pengekodan berbeza bergantung pada konteksnya. Kandungan HTML: pengekodan HTML (< > &). Atribut HTML: pengekodan atribut HTML. JavaScript: pelolosan JS. Parameter URL: pengekodan URL (pengekodan peratus). Penggunaan pengekodan yang salah meninggalkan kelemahan yang boleh dieksploitasi penyerang.

Pengekodan HTML terhadap XSS

Jangan sesekali masukkan data pengguna secara terus ke dalam HTML. Gunakan enjin templat atau pustaka yang meloloskan HTML secara automatik. Dalam React, {value} adalah selamat; dangerouslySetInnerHTML memintas pelolosan. Dalam Django, templat meloloskan secara automatik melainkan anda menggunakan penapis safe secara jelas.

Pengekodan Konteks JavaScript

Apabila memasukkan data ke dalam JavaScript (contohnya, pemboleh ubah yang dimulakan dengan data pengguna), pengekodan HTML tidak mencukupi. Gunakan pengekodan JSON: JSON.stringify(value). Kaedah ini menghalang data daripada keluar daripada konteks literal rentetan JS.

Pengekodan URL

Data yang dibekalkan pengguna dan dimasukkan ke dalam URL mesti dikodkan menggunakan pengekodan peratus melalui encodeURIComponent() (JS) atau urllib.parse.quote() (Python). Data yang tidak dikodkan boleh memanipulasi struktur URL lalu menyebabkan ubah hala terbuka atau lintasan laluan.

Dasar Keselamatan Kandungan sebagai Pertahanan Berlapis

CSP menambahkan lapisan pertahanan kedua terhadap XSS. CSP ketat yang menggunakan nonce menghalang pelaksanaan skrip sebaris walaupun muatan XSS disuntik, kerana pelayar enggan melaksanakan skrip tanpa atribut nonce yang betul.

Pencegahan XSS Berasaskan DOM

XSS DOM berlaku apabila JavaScript membaca daripada sumber yang dikawal penyerang (location.hash, document.URL, cookie) dan menulis kepada saluran berbahaya (innerHTML, document.write, eval). Audit semua aliran data daripada API pelayar ke saluran DOM menggunakan alat analisis statik.

Semakan Pengetahuan

Mengapakah pengesahan masukan pada sisi pelayan penting walaupun pengesahan pada sisi klien telah dilaksanakan?

Ringkasan

Pengesahan masukan (senarai benarkan, pemeriksaan jenis, had panjang) yang digabungkan dengan pengekodan keluaran peka konteks (HTML, JS, URL, parameterisasi SQL) ialah pertahanan utama terhadap serangan suntikan dan XSS. Kedua-duanya mesti diterapkan pada sisi pelayan tanpa pengecualian.

Percuma untuk bermula

Pelajari Cyber Security Academy dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
76
Pelajaran
303

Soalan Lazim

Adakah pelajaran “Pengesahan Input dan Pengekodan Output” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Cyber Security Academy, termasuk “Pengesahan Input dan Pengekodan Output”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Cyber Security Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pengesahan Input dan Pengekodan Output”?

Sahkan semua input di sisi pelayan, kodkan output dalam konteks yang betul dan cegah suntikan. Anda berlatih Cyber Security Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Cyber Security Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Cyber Security Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Pengesahan Input dan Pengekodan Output” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Cyber Security Academy ini?

Ya. Setiap pelajaran Cyber Security Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Pengesahan Input dan Pengekodan Output
  2. Pengurusan Kebergantungan Selamat
  3. OWASP ASVS: Standard Pengesahan Keselamatan Aplikasi
  4. Teknik Semakan Kod Selamat
← Kembali ke Cyber Security Academy