Kerentanan traversal direktori ialah masalah keselamatan rangkaian biasa yang membolehkan penyerang mendapatkan fail sensitif dalam sistem, seperti kata laluan pengguna, fail konfigurasi, dsb., dengan mengakses URL atau API tertentu. Dalam PHP, kelemahan traversal direktori dicapai dengan menggunakan laluan relatif untuk mengakses fail atau direktori dalam sistem fail. Cara menggunakan PHP untuk mencegah kelemahan traversal direktori adalah sangat penting Di bawah ini kami akan memperkenalkan beberapa langkah pencegahan yang berkesan.
Sebarang data yang dibekalkan pengguna harus dianggap tidak dipercayai, walaupun ia datang daripada sumber yang dipercayai. Apabila input pengguna diproses, ia harus ditapis, disahkan dan, jika perlu, dikodkan untuk menghalang pengguna berniat jahat daripada menyerahkan aksara khas untuk memintas semakan keselamatan aplikasi.
Laluan relatif boleh menjadikan sistem fail lebih mudah untuk diurus, tetapi menggunakan laluan mutlak ke fail rujukan boleh menghalang serangan traversal direktori dengan berkesan. Dalam PHP, anda boleh menggunakan pemalar __FILE__ untuk mendapatkan laluan mutlak fail semasa, dan kemudian gunakan fungsi dirname() untuk mendapatkan laluan direktori di mana fail semasa berada.
Apabila menerima permintaan pengguna, laluan yang diminta hendaklah disahkan terlebih dahulu untuk memastikan laluan yang diminta benar-benar menghala ke laluan yang wujud dalam fail fail sistem atau direktori. Anda boleh menggunakan fungsi terbina dalam PHP seperti fungsi file_exists() atau fungsi is_dir() untuk mengesahkan laluan Jika pengesahan gagal, mesej ralat harus dikembalikan dan akses ditolak.
Jika fail atau direktori tertentu tidak perlu diakses secara umum, ini boleh dicapai dengan mengawal kebenaran akses pada pelayan HTTP atau tahap sistem pengendalian . Dalam PHP, anda juga boleh mengehadkan kebenaran akses dengan menetapkan kebenaran fail atau direktori, seperti menggunakan fungsi chmod() untuk menetapkan kebenaran baca, tulis dan laksanakan fail atau direktori.
Kadangkala, kami tidak pasti sama ada laluan yang diminta oleh pengguna wujud dalam sistem. Dalam kes ini, senarai putih boleh digunakan untuk menapis permintaan dan hanya membenarkan fail atau direktori tertentu untuk diakses. Senarai putih boleh disimpan dalam fail konfigurasi dan apabila pengguna membuat permintaan, fail konfigurasi boleh dibaca untuk mengesahkan sama ada permintaan mereka berada dalam senarai putih.
Di atas ialah beberapa kaedah biasa untuk mengelakkan kelemahan traversal direktori Malah, terdapat kaedah lain, seperti menggunakan CDN untuk menapis permintaan, menggunakan ungkapan biasa untuk menapis input, dsb. Tanpa mengira pendekatan, melindungi aplikasi dan data pengguna adalah penting.
Atas ialah kandungan terperinci Bagaimana untuk melindungi daripada kelemahan traversal direktori menggunakan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!