Я не знаю, произойдет ли это, но я попробую. Я узнал, что есть много функций для проверки загрузки. < /P>
В моем проекте мне нужно быть в безопасности с загруженными изображениями. Также может быть действительно большое количество его, и это может потребовать большой пропускной способности, поэтому покупка API не является вариантом. Я также думаю, что это поможет для многих людей, потому что невозможно найти действительно безопасного. Но я не эксперт в PHP, так что для меня действительно головная боль, чтобы добавить некоторые функции, поэтому я попрошу, чтобы это сообщество помогло создать один полный сценарий действительно безопасной загрузки изображения. /> PHP-изображение загружать список проверки безопасности. />
Отключить PHP от запуска внутри папки загрузки, используя .httaccess. < /li>
Не разрешать загрузку, если имя файла содержит строку "php". введите. Загрузите в подчиненную неректорию, а не корневой каталог. < /Li>
< /ul>
Также: < /p>
Перепроцесс, используя изображение, используя GD (или Imagick) и сохранить обработанное изображение. Все остальные просто веселые для хакеров "< /li>
Как указал RR, используйте ove_uploaded_file () для любой загрузки" < /li>
Кстати, вы хотите быть очень ограничивающим в своей папке загрузки. Эти места - один из темных угла, где случаются многие эксплойты
. Это действительно для любого типа загрузки и любого программирования
Уровень 1: Проверьте расширение (endension file заканчивается)
Уровень 2: Проверьте тип mime ($ file_inf = getImageize ($ _file ($ _file '' '] $ file_mime = $ file_info ['mime'] < /li>
Уровень 3: Читать первые 100 байтов и проверить, есть ли у них байты в следующем диапазоне: ASCII 0-8, 12-31 (десятичные коэффициенты). Из
здесь:
function uploadFile ($file_field = null, $check_image = false, $random_name = false) {
//Config Section
//Set file upload path
$path = 'uploads/'; //with trailing slash
//Set max file size in bytes
$max_size = 1000000;
//Set default file extension whitelist
$whitelist_ext = array('jpeg','jpg','png','gif');
//Set default file type whitelist
$whitelist_type = array('image/jpeg', 'image/jpg', 'image/png','image/gif');
//The Validation
// Create an array to hold any output
$out = array('error'=>null);
if (!$file_field) {
$out['error'][] = "Please specify a valid form field name";
}
if (!$path) {
$out['error'][] = "Please specify a valid upload path";
}
if (count($out['error'])>0) {
return $out;
}
//Make sure that there is a file
if((!empty($_FILES[$file_field])) && ($_FILES[$file_field]['error'] == 0)) {
// Get filename
$file_info = pathinfo($_FILES[$file_field]['name']);
$name = $file_info['filename'];
$ext = $file_info['extension'];
//Check file has the right extension
if (!in_array($ext, $whitelist_ext)) {
$out['error'][] = "Invalid file Extension";
}
//Check that the file is of the right type
if (!in_array($_FILES[$file_field]["type"], $whitelist_type)) {
$out['error'][] = "Invalid file Type";
}
//Check that the file is not too big
if ($_FILES[$file_field]["size"] > $max_size) {
$out['error'][] = "File is too big";
}
//If $check image is set as true
if ($check_image) {
if (!getimagesize($_FILES[$file_field]['tmp_name'])) {
$out['error'][] = "Uploaded file is not a valid image";
}
}
//Create full filename including path
if ($random_name) {
// Generate random filename
$tmp = str_replace(array('.',' '), array('',''), microtime());
if (!$tmp || $tmp == '') {
$out['error'][] = "File must have a name";
}
$newname = $tmp.'.'.$ext;
} else {
$newname = $name.'.'.$ext;
}
//Check if file already exists on server
if (file_exists($path.$newname)) {
$out['error'][] = "A file with this name already exists";
}
if (count($out['error'])>0) {
//The file has not correctly validated
return $out;
}
if (move_uploaded_file($_FILES[$file_field]['tmp_name'], $path.$newname)) {
//Success
$out['filepath'] = $path;
$out['filename'] = $newname;
return $out;
} else {
$out['error'][] = "Server Error!";
}
} else {
$out['error'][] = "No file uploaded";
return $out;
}
}
if (isset($_POST['submit'])) {
$file = uploadFile('file', true, true);
if (is_array($file['error'])) {
$message = '';
foreach ($file['error'] as $msg) {
$message .= '
'.$msg.'
';
}
} else {
$message = "File uploaded successfully".$newname;
}
echo $message;
}
< /code> < /li>
и форма: < /p>
Подробнее здесь: [url]https://stackoverflow.com/questions/38509334/full-secure-image-upload-script[/url]
Я не знаю, произойдет ли это, но я попробую. Я узнал, что есть много функций для проверки загрузки. < /P>
В моем проекте мне нужно быть в безопасности с загруженными изображениями. Также может быть действительно большое количество его, и это может потребовать большой пропускной способности, поэтому покупка API не является вариантом. Я также думаю, что это поможет для многих людей, потому что невозможно найти действительно безопасного. Но я не эксперт в PHP, так что для меня действительно головная боль, чтобы добавить некоторые функции, поэтому я попрошу, чтобы это сообщество помогло создать один полный сценарий действительно безопасной загрузки изображения. /> PHP-изображение загружать список проверки безопасности. /> [list] [*] Отключить PHP от запуска внутри папки загрузки, используя .httaccess. < /li> Не разрешать загрузку, если имя файла содержит строку "php". введите. Загрузите в подчиненную неректорию, а не корневой каталог. < /Li> < /ul>
Также: < /p>
Перепроцесс, используя изображение, используя GD (или Imagick) и сохранить обработанное изображение. Все остальные просто веселые для хакеров "< /li> Как указал RR, используйте ove_uploaded_file () для любой загрузки" < /li> Кстати, вы хотите быть очень ограничивающим в своей папке загрузки. Эти места - один из темных угла, где случаются многие эксплойты
. Это действительно для любого типа загрузки и любого программирования
language /server. Проверьте
https://www.owasp.org/index.php/unrestricted_file_upload [*] Уровень 1: Проверьте расширение (endension file заканчивается) [*] Уровень 2: Проверьте тип mime ($ file_inf = getImageize ($ _file ($ _file '' '] $ file_mime = $ file_info ['mime'];) < /li> Уровень 3: Читать первые 100 байтов и проверить, есть ли у них байты в следующем диапазоне: ASCII 0-8, 12-31 (десятичные коэффициенты). Из здесь:
//Check file has the right extension if (!in_array($ext, $whitelist_ext)) { $out['error'][] = "Invalid file Extension"; }
//Check that the file is of the right type if (!in_array($_FILES[$file_field]["type"], $whitelist_type)) { $out['error'][] = "Invalid file Type"; }
//Check that the file is not too big if ($_FILES[$file_field]["size"] > $max_size) { $out['error'][] = "File is too big"; }
//If $check image is set as true if ($check_image) { if (!getimagesize($_FILES[$file_field]['tmp_name'])) { $out['error'][] = "Uploaded file is not a valid image"; } }
//Create full filename including path if ($random_name) { // Generate random filename $tmp = str_replace(array('.',' '), array('',''), microtime());
if (!$tmp || $tmp == '') { $out['error'][] = "File must have a name"; } $newname = $tmp.'.'.$ext; } else { $newname = $name.'.'.$ext; }
//Check if file already exists on server if (file_exists($path.$newname)) { $out['error'][] = "A file with this name already exists"; }
if (count($out['error'])>0) { //The file has not correctly validated return $out; }