راهنمایی برای امن کردن کد php
سلام
<?php
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"".$_GET['name']."\"");
$file_content = file_get_contents($_GET['name']);
echo $file_content;
?>
کد بالا داری مشکل امنیتی LFI هست یعنی راحت میشه به صورت زیر ازش سو استفاده کرد
localhost/file.php?name=../../../../../etc/passwd
سوال بنده اینه چطور میتونم این کد رو امن کنم؟ یعنی کاری کنم که فقط پسوند zip رو دانلود کنه و هر پسوند دیگه به هر شکلی وارد شد ارور بده و اجازه دانلود نده
پشاپیش ممنون
نقل قول: راهنمایی برای امن کردن کد php
واقعا اینجا انجمن برنامه نویسیه؟
نقل قول: راهنمایی برای امن کردن کد php
$filename = 'filename.zip';
$valid = array( 'zip' );
if ( in_array( pathinfo( $filename )['extension'], $valid ) )
echo 'OK';
نقل قول: راهنمایی برای امن کردن کد php
pathinfo( $filename )['extension']
به این صورت تو بعضی از سرور ها با error مواجه میشین من خودم یک پروژه نوشته بودم که به همین روش استفاده کرده بودم وقتی که پروژه رو آپلود کردم با error مواجه شدم !
نقل قول: راهنمایی برای امن کردن کد php
با سلام البته شاید یه خورده دیر باشه اما با این قطعه کد می تونید extension رو چک کنید. البته اگر منظورتون رو درست متوجه شده باشم.
$path = "/home/test/test.zip"; // masir ya khude file
if(ChekZip($path)) // ejaze be download dar surate true budan
echo 'Download';
function ChekZip($path)
{
$ZipFile = pathinfo($path);
if($ZipFile['extension'] == 'zip')
return true; // megadr true dar surate zip budan
else
return false; // megdar false dar surate zip nabudan
}
100 البته با تابع mime_content_type هم می شه نوع فایل رو به صورت زیر مشخص کرد :
$path = "/home/test/test.zip";
$ZipFile = mime_content_type($path);
if($ZipFile == 'application/zip')
return true;