Penjelasan terperinci tentang kelemahan kemasukan fail PHP dan kaedah pencegahan
Dalam aplikasi WEB, fungsi kemasukan fail adalah fungsi yang sangat biasa. Walau bagaimanapun, kelemahan pemasukan fail boleh berlaku jika parameter yang dimasukkan pengguna tidak dikendalikan dengan berhati-hati. Kerentanan ini boleh membenarkan penyerang untuk memuat naik kod PHP dan memasukkannya ke dalam aplikasi, dengan itu mendapat kawalan ke atas pelayan. Oleh itu, adalah sangat perlu untuk mempunyai pemahaman yang mendalam tentang punca dan kaedah pencegahan kelemahan kemasukan fail PHP.
Punca kelemahan kemasukan fail PHP
Kejadian kerentanan kemasukan fail PHP biasanya berkaitan dengan dua sebab berikut:
1 🎜 >
Dalam PHP, anda boleh memasukkan satu fail PHP ke dalam fail PHP yang lain melalui fungsi seperti sertakan dan perlukan. Jika data yang diserahkan pengguna digunakan sebagai laluan fail dalam fungsi ini, penyerang boleh membina skrip PHP yang mengandungi kod hasad dan memuat naiknya ke pelayan dengan mudah. Contohnya:<?php $page=$_GET['page']; include($page); ?>
<?php $page=$_GET['page']; include('pages/'.$page); ?>
Menggunakan laluan mutlak boleh menghalang penyerang secara berkesan daripada memintas sekatan dengan menggunakan laluan relatif seperti ../. Sebagai contoh, anda boleh menggunakan $_SERVER['DOCUMENT_ROOT'] untuk mendapatkan direktori akar tapak web, dan kemudian gunakan fungsi include, require dan lain-lain dalam kombinasi dengan laluan fail tertentu. Contohnya:
<?php $page=$_GET['page']; include($_SERVER['DOCUMENT_ROOT'].'/pages/'.$page); ?>
<?php $page=$_GET['page']; $whitelist=array('home','about','contact'); if(in_array($page,$whitelist)){ include("pages/".$page.".php"); }else{ echo "Invalid page requested"; } ?>
<?php $page=$_GET['page']; $file="pages/".$page; if(file_exists($file)){ include($file); }else{ echo "Invalid page requested"; } ?>
Atas ialah kandungan terperinci Fail PHP mengandungi kelemahan dan penjelasan terperinci tentang kaedah pencegahan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!