Protect from zip-bombs
This commit is contained in:
@ -15,7 +15,7 @@ if(empty($_SESSION['ftp_pass'])){
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
$ftp=ftp_connect('127.0.0.1') or die ('No Connection to FTP server!');
|
$ftp=ftp_connect('127.0.0.1') or die ('No Connection to FTP server!');
|
||||||
if(!ftp_login($ftp, "$user[onion].onion", $_SESSION['ftp_pass'])){
|
if(@!ftp_login($ftp, "$user[onion].onion", $_SESSION['ftp_pass'])){
|
||||||
send_login();
|
send_login();
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
@ -152,6 +152,14 @@ if(!empty($_POST['unzip']) && !empty($_POST['files'])){
|
|||||||
}
|
}
|
||||||
$tmpfile='/tmp/'.uniqid().'.zip';
|
$tmpfile='/tmp/'.uniqid().'.zip';
|
||||||
ftp_get($ftp, $tmpfile, $file, FTP_BINARY);
|
ftp_get($ftp, $tmpfile, $file, FTP_BINARY);
|
||||||
|
//prevent zip-bombs
|
||||||
|
$size=0;
|
||||||
|
$resource=zip_open($tmpfile);
|
||||||
|
while($dir_resource=zip_read($resource)) {
|
||||||
|
$size+=zip_entry_filesize($dir_resource);
|
||||||
|
}
|
||||||
|
zip_close($resource);
|
||||||
|
if($size<=1073741824){ //1GB limit
|
||||||
$zip->open($tmpfile);
|
$zip->open($tmpfile);
|
||||||
$tmpdir='/tmp/'.uniqid().'/';
|
$tmpdir='/tmp/'.uniqid().'/';
|
||||||
mkdir($tmpdir);
|
mkdir($tmpdir);
|
||||||
@ -159,6 +167,7 @@ if(!empty($_POST['unzip']) && !empty($_POST['files'])){
|
|||||||
ftp_recursive_upload($ftp, $tmpdir);
|
ftp_recursive_upload($ftp, $tmpdir);
|
||||||
rmdir($tmpdir);
|
rmdir($tmpdir);
|
||||||
$zip->close();
|
$zip->close();
|
||||||
|
}
|
||||||
unlink($tmpfile);
|
unlink($tmpfile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user