У меня есть сценарий загрузки файлов, как показано ниже (upload.php). Как я могу догадаться, кто-то может написать скрипт, который отправляет 1000+ файлов в upload.php за небольшой промежуток времени.Как защитить от атаки загрузки файлов в php?
Итак, как защитить себя от многочисленных попыток загрузки файлов?
<?php
if (!empty($_FILES)) {
$ds = DIRECTORY_SEPARATOR;
$storeFolder = 'uploads';
$rand_dir = rand(1, 1000);
$targetPath = realpath(dirname(__FILE__) . '/..') . $ds . $storeFolder . $ds . $rand_dir . $ds;
$targetPath_clean = $storeFolder . $ds . $rand_dir . $ds;
if (!file_exists($targetPath))
mkdir($targetPath, 0777, true);
$filename = date('YmdHis_') . generateRandomString() . '.' . pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
move_uploaded_file($_FILES['file']['tmp_name'], $targetPath . $filename);
echo $targetPath_clean . $filename;
} else {
die('access denied');
}
?>
невозможно. php не запускается до ПОСЛЕ завершения загрузки. в буквальном смысле вы ничего не можете сделать в php, чтобы предотвратить проблему. –
http://stackoverflow.com/questions/9813556/count-and-limit-the-number-of-files-uploaded-html-file-input –
Что делать, если 1000+ законных пользователей пытаются отправить файл в файл upload.php в то же время ? – frz3993