Kerentanan ialah masalah yang tidak dapat dielakkan dalam kod, dan kelemahan laluan lintasan ialah salah satu jenis kelemahan yang biasa. Kerentanan laluan laluan biasanya disebabkan oleh semakan kesahihan input yang lemah atau logik yang tidak jelas. Penyerang boleh mengeksploitasi kelemahan ini untuk mengakses sumber di luar sistem aplikasi.
Artikel ini akan memperkenalkan prinsip dan kemudaratan kelemahan laluan traversal, dan menyediakan beberapa petua PHP yang berkesan untuk mencegah kelemahan traversal laluan.
1. Bahaya kerentanan laluan laluan
Kerentanan laluan laluan ialah jenis kerentanan biasa Penyerang boleh menggunakan kerentanan ini untuk memintas kawalan akses aplikasi, dengan itu mengakses fail Dibenarkan pada masa hadapan. direktori.
Dalam PHP, anda boleh membaca dan melaksanakan fail skrip PHP atau fail lain melalui beberapa fungsi (seperti menyertakan, memerlukan, file_get_contents, dll.). Penyerang boleh menggunakan simbol laluan relatif seperti ../ dalam parameter fungsi untuk melaksanakan lintasan laluan.
Sebagai contoh, penyerang boleh menukar URL berikut:
http://example.com/index.php?file=../../../../. ./ ../etc/password
diserahkan kepada aplikasi web sasaran, dengan itu membaca dan mengeksfiltrasi kandungan fail /etc/password.
2. Bagaimana untuk mengelakkan kelemahan laluan laluan
Untuk mengelakkan kelemahan laluan laluan, kita perlu melakukan tiga usaha berikut:
1 >
Untuk sebarang input daripada pengguna, penapisan yang berkesan diperlukan untuk menghalang penyerang daripada menyuntik aksara haram dan memintas fungsi semakan laluan. Kita boleh menggunakan fungsi terbina dalam PHP (seperti realpath, basename, diname, dll.) untuk menapis input pengguna. Sebagai contoh, apabila menggunakan fungsi include, input nama fail oleh pengguna boleh ditapis mengikut laluan dan nama fail terlebih dahulu, contohnya: $filename = $_GET['filename' ];$nama fail = str_replace(array('/', ''), '', $filename);
$filename = realpath(__DIR__.'/'.$filename);
$filename = basename($filename);
$filename = realpath(__DIR__.' /'.
Atas ialah kandungan terperinci Bagaimana untuk melindungi daripada kelemahan laluan traversal menggunakan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!