Memandangkan isu keselamatan rangkaian semakin mendapat perhatian, semakin ramai pengaturcara mula memberi perhatian dan belajar cara menghalang kod daripada diserang. Antaranya, kaedah serangan biasa termasuk suntikan SQL, XSS, CSRF, dll. Walau bagaimanapun, terdapat satu lagi kaedah serangan biasa yang dipandang remeh: kelemahan suntikan LDAP. Artikel ini akan memperkenalkan prinsip kaedah serangan ini dan cara menggunakan PHP untuk mencegah kelemahan suntikan LDAP.
LDAP (Lightweight Directory Access Protocol) ialah protokol Internet yang digunakan untuk mengakses maklumat peserta. Contohnya, LDAP boleh digunakan untuk menanyakan maklumat semua pekerja dalam perusahaan (termasuk nama, alamat e-mel, nombor telefon, dsb.). LDAP sering digunakan untuk menyimpan dan mengakses maklumat kritikal, jadi keselamatannya adalah kritikal.
Kerentanan suntikan LDAP adalah serupa dengan kerentanan suntikan SQL. Penyerang melaksanakan kod serangan melalui pernyataan pertanyaan LDAP yang dibina khas. Tidak seperti suntikan SQL, pernyataan pertanyaan LDAP menggunakan struktur sintaks yang berbeza. Penyerang mengambil kesempatan daripada ciri struktur ini dan memasukkan kod hasad yang serupa dengan SQL, seperti ' atau '1'='1, untuk mencapai suntikan LDAP.
Satu lagi kebimbangan mengenai kerentanan suntikan LDAP ialah ia membenarkan penyerang melakukan pertanyaan LDAP untuk mendapatkan lebih banyak maklumat daripada pelayan LDAP. Maklumat ini mungkin termasuk bukti kelayakan pengguna, konfigurasi rangkaian, struktur direktori, dsb.
3.1 Pengesahan Input
Seperti kebanyakan jenis serangan suntikan, langkah pertama dalam mencegah kelemahan suntikan LDAP. Langkah seterusnya ialah memastikan input anda disahkan. Apabila memasukkan bukti kelayakan, pastikan anda hanya membenarkan aksara dan pemformatan yang betul, dan aksara lain (seperti petikan tunggal dan berganda) ditolak. Dalam PHP, pengesahan input boleh dilaksanakan menggunakan ungkapan biasa atau penapis terbina dalam dalam bahasa PHP.
3.2. Fungsi melarikan diri
Melepaskan input juga sangat penting untuk mengelakkan suntikan LDAP. Dalam PHP, anda boleh menggunakan fungsi terbina dalam seperti ldap_escape()
untuk melepaskan input. Fungsi ldap_escape()
melepaskan aksara khas kepada nilai heksadesimalnya.
Sebagai contoh, jika anda memasukkan cn=’(ujian), ia akan menjadi cn= A (ujian) A selepas melarikan diri.
3.3. Pengikatan dan penapisan parameter
Anda boleh menggunakan pengikatan dan penapisan parameter untuk mencapai perlindungan suntikan LDAP yang lebih berkuasa. Terdapat beberapa fungsi terbina dalam PHP yang boleh digunakan untuk ini, seperti ldap_prepare()
dan ldap_escape_filter()
. Fungsi ini membolehkan anda membina pertanyaan LDAP selamat sambil melindungi pelayan LDAP anda daripada serangan.
Menggunakan fungsi ldap_prepare()
, anda boleh mengikat parameter sebelum melaksanakan pernyataan pertanyaan LDAP. Ini membolehkan anda memastikan bahawa input telah ditapis dan dikeluarkan, dan bersedia untuk berkomunikasi dengan selamat dengan pelayan LDAP anda.
Menggunakan fungsi ldap_escape_filter()
anda boleh melepaskan penapis pertanyaan LDAP. Ini adalah ciri yang sangat penting kerana penapis pertanyaan LDAP selalunya mengandungi beberapa aksara yang tidak selamat seperti petikan tunggal, petikan berganda dan kurungan. Dengan menggunakan fungsi ldap_escape_filter()
anda boleh memastikan bahawa aksara ini dilepaskan dan ditapis dengan betul.
Kerentanan suntikan LDAP mungkin tidak biasa seperti jenis serangan lain, tetapi ia masih merupakan kelemahan keselamatan yang sangat serius. Dengan melaksanakan pengesahan input, fungsi melarikan diri, pengikatan parameter dan penapisan, anda boleh melindungi pelayan LDAP anda daripada serangan dengan berkesan. Mari kita melindungi data kita bersama-sama dan menjadi pengaturcara yang berkelayakan.
Atas ialah kandungan terperinci Bagaimana untuk melindungi daripada kelemahan suntikan LDAP menggunakan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!