Прекратить загрузку вредоносных файлов PHP через формы

У меня есть форма загрузки, созданная в php на моем веб-сайте, где люди могут загружать zip-файлы. Затем zip-файл извлекается и все местоположения файлов добавляются в базу данных. Форма загрузки предназначена для людей, которые могут загружать только изображения. Очевидно, что файлы находятся в папке zip. Я не могу проверить, какие файлы загружаются, пока файл не будет извлечен. Мне нужен кусок кода, который удалит все файлы, которые не являются форматами изображений (.png,.jpeg и т. Д.). Я действительно беспокоюсь о том, что люди могут загружать вредоносные файлы php, большой риск для безопасности! Мне также нужно знать, что люди, меняющие расширения php-файлов, пытаются обойти эту функцию безопасности.

Это оригинальный скрипт, который я использовал http://net.tutsplus.com/videos/screencasts/how-to-open-zip-files-with-php/

Это код, который на самом деле извлекает файл.zip:

function openZip($file_to_open) {
    global $target;

    $zip = new ZipArchive();
    $x = $zip->open($file_to_open);
    if($x === true) {
        $zip->extractTo($target);
        $zip->close();

        unlink($file_to_open);
    } else {
        die("There was a problem. Please try again!");
    }
}

Спасибо, Бен.

10 ответов

Я действительно беспокоюсь о том, что люди могут загружать вредоносные файлы php, большой риск для безопасности!

Вершина айсберга!

Мне также нужно знать, что люди меняют расширения файлов php, пытаясь обойти эту функцию безопасности.

Как правило, изменение расширений не позволит PHP интерпретировать эти файлы как сценарии. Но это не единственная проблема. Есть больше вещей, чем '... php', которые могут повредить серверную часть; '.htaccess' и файлы с установленным битом X очевидны, но далеко не все, о чем вам нужно беспокоиться. Даже игнорируя вещи на стороне сервера, существует огромная проблема на стороне клиента.

Например, если кто-то может загрузить файл ".html", он может включить в него тег