Avoid DOS with gigant ckSize values (#60)

Normalize quotes and avoid DOS with gigant ckSize values
This commit is contained in:
sombra2eternity 2017-09-05 07:46:00 +02:00 committed by Federico Dossena
parent 44a681fa25
commit b379a978f5

View file

@ -4,21 +4,24 @@
@ini_set('output_buffering', 'Off'); @ini_set('output_buffering', 'Off');
@ini_set('output_handler', ''); @ini_set('output_handler', '');
// Headers // Headers
header( "HTTP/1.1 200 OK" ); header('HTTP/1.1 200 OK');
// Download follows... // Download follows...
header('Content-Description: File Transfer'); header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream'); header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=random.dat'); header('Content-Disposition: attachment; filename=random.dat');
header('Content-Transfer-Encoding: binary'); header('Content-Transfer-Encoding: binary');
// Never cache me // Never cache me
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header("Cache-Control: post-check=0, pre-check=0", false); header('Cache-Control: post-check=0, pre-check=0', false);
header("Pragma: no-cache"); header('Pragma: no-cache');
// Generate data // Generate data
$data=openssl_random_pseudo_bytes(1048576); $data=openssl_random_pseudo_bytes(1048576);
// Deliver chunks of 1048576 bytes // Deliver chunks of 1048576 bytes
for($i=0;$i<intval($_GET["ckSize"]);$i++){ $chunks=isset($_GET['ckSize']) ?? intval($_GET['ckSize']) : 4;
if(empty($chunks)){$chunks = 4;}
if($chunks>100){$chunks = 100;}
for($i=0;$i<$chunks;$i++){
echo $data; echo $data;
flush(); flush();
} }
?> ?>