Dengan perkembangan teknologi maklumat yang berterusan, Internet telah menjadi bahagian yang amat diperlukan dalam kehidupan seharian manusia. Antaranya, aplikasi Web adalah jenis aplikasi yang paling biasa dan popular dalam bidang pembangunan Internet. LDAP (Lightweight Directory Access Protocol) ialah protokol capaian direktori yang biasa digunakan dalam aplikasi web. Walau bagaimanapun, pada masa yang sama, serangan suntikan LDAP juga telah menjadi salah satu ancaman keselamatan biasa dalam aplikasi web. Artikel ini akan memperkenalkan cara menggunakan PHP untuk mencegah serangan suntikan LDAP.
Serangan suntikan LDAP menyerang aplikasi web dengan membina rentetan pertanyaan LDAP yang berniat jahat dan menyuntik kod LDAP boleh laku ke dalam aplikasi web untuk mendapatkan sensitif maklumat atau memenuhi tujuan jahat penyerang. Prinsip serangan suntikan LDAP dan serangan suntikan SQL adalah serupa. Kedua-duanya menipu aplikasi web dengan memasukkan aksara tertentu untuk mencapai tujuan serangan.
Penapisan data ialah cara yang berkesan untuk mencegah serangan suntikan LDAP. Dalam PHP, terdapat beberapa fungsi terbina dalam yang boleh digunakan untuk menapis input, seperti htmlspecialchars(), addslashes(), dsb. Fungsi ini boleh melepaskan beberapa aksara khas ke dalam entiti HTML atau menambah garis miring ke belakang pada rentetan, dengan itu menghalang aksara berniat jahat daripada dilaksanakan. Contohnya:
$username = htmlspecialchars($_POST['username']); $password = addslashes($_POST['password']);
Dalam aplikasi web, memandangkan data pengguna dipaparkan selepas pemprosesan, penyerang boleh mengubah suai Output aplikasi untuk dilaksanakan serangan itu. Oleh itu, output hendaklah ditapis untuk mengelakkan daripada memasukkan kod LDAP boleh laku dalam output. Dalam PHP, anda boleh menggunakan fungsi terbina dalam seperti htmlentities(), strip_tags(), dsb. untuk menapis output, contohnya:
echo htmlentities($username);
sedang digunakan Apabila membuat pertanyaan LDAP, anda harus menggunakan penyata PHP yang telah dikompilasi untuk melaksanakan pernyataan pertanyaan LDAP untuk mengelakkan serangan suntikan. PHP menyediakan fungsi ldap_prepare() untuk mencipta pernyataan pertanyaan LDAP yang telah disusun sebelumnya Fungsi ini boleh menggunakan ruang letak untuk menggantikan pembolehubah dalam pernyataan pertanyaan, contohnya:
$query = ldap_prepare($ldap_conn, "(&(objectClass=user)(samaccountname=?))", array($username));
Dengan cara ini, apabila melaksanakan pernyataan pertanyaan LDAP, pengguna dimasukkan. pembolehubah diproses secara berasingan daripada penyataan pertanyaan yang telah disusun sebelumnya, dengan itu mengelakkan serangan suntikan LDAP pada tahap tertentu.
Apabila menggunakan LDAP untuk pertanyaan, anda juga boleh menggunakan PHP untuk menapis rentetan pertanyaan LDAP untuk pertahanan. PHP menyediakan fungsi ldap_escape(), yang boleh melepaskan aksara khas kepada aksara undang-undang dalam rentetan pertanyaan LDAP, dengan itu menghalang aksara khas daripada dilaksanakan sebagai kod LDAP. Contohnya:
$username = ldap_escape($username, "", LDAP_ESCAPE_FILTER); $query = "(uid={$username})";
Apabila menggunakan LDAP untuk pertanyaan, anda harus menggunakan kaedah sambungan selamat yang disediakan oleh PHP, seperti TLS atau SSL, untuk memastikan Keselamatan penghantaran data. Dalam PHP, anda boleh menggunakan fungsi ldap_start_tls() untuk menyambung ke pelayan LDAP menggunakan TLS atau fungsi ldap_ssl_connect() untuk menyambung ke pelayan LDAP menggunakan SSL, contohnya:
$ldap_conn = ldap_ssl_connect($ldap_server, $ldap_port);
Akhir sekali, kami menyediakan sampel kod PHP berikut untuk mempertahankan daripada serangan suntikan LDAP:
Di atas adalah kaedah dan sampel tentang cara menggunakan PHP untuk mempertahankan diri daripada serangan suntikan LDAP Saya harap ia akan membantu semua orang.
Atas ialah kandungan terperinci Bagaimana untuk melindungi daripada serangan suntikan LDAP menggunakan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!