Крч, я инклудил на всех страницах такой хз, правильно ли это? И где может быть ошибка? Я ещё новычок. Помогите если есть на этом коде ошибка:
<?php
if (($_SERVER['REQUEST_METHOD'] == 'POST')&&(is_array($_FILES))){
$types = array('image/gif', 'image/png', 'image/jpeg', 'audio/mp4', 'audio/mpeg', 'image/pjpeg', 'video/3gpp', 'video/x-flv', 'application/x-rar-compressed', 'application/zip');
if (!in_array($_FILES['file']['type'], $types)) die('Запрещённый тип файла. <a href="?">Попробовать другой файл?</a>');
}
?>
[code] <?php
if (!in_array($_FILES['file']['type'], $types)) OR die('Запрещённый тип файла. <a href="?">Попробовать другой файл?</a>');
?>
[/code]
Не то?)
Не вижу смысла в этой защите. Её можно обойти.
<?
#!/usr/bin/perl
#
use LWP;
use HTTP::Request::Common;
$ua = $ua = LWP::UserAgent->new;;
$res = $ua->request(POST 'http://site.ru/upload.php',
Content_Type => 'form-data',
Content => [userfile => ["shell.php", "shell.php", "Content-Type" =>"image/gif"],],);
print $res->as_string();
?>
Content => [userfile => ["shell.php", "shell.php", "Content-Type" =>"image/gif"],],);
Мозги включи (если есть, что врядли) и еще раз тему перечитай
Денис Павлик, что надо поставить чтоб не загрузили кроме этих типов?
Сашка Бородач, if (($_SERVER['REQUEST_METHOD'] == 'POST')&&(is_array($_FILES))){
$blacklist = array(".php", ".phtml",".html",".sql",".js",".xml", ".php3", ".php4"
foreach ($blacklist as $item) {
if(preg_match("/$item\$/i", $_FILES['file']['name'])) {
echo "Невозможно загрузить данный файл\n";
exit;
}
}}
Или так лучше?
Я считаю, что оптимальный вариант это хранение файлов за корневой директорией и не давать пользователю знать оригинальное название файла. Так же при наличие финансовой возможности размещать файлы на сторонних серверах, как это делает множество крупных компаний.