Скрипт загрузки файлов

Перед добавлением открытой загрузки файлов на сайт, нужно определиться какие типы файлов можно разрешать загружать. Например, только файлы с расширением .png и .jpg.

Если Ваш список файлов не ограничен только видеофайлами или изображениями, необходимо запретить загружать файлы, несущие потенциальную опасность.

Пример:


<?php
/* Создаем паттерн, где есть список запрещенных файлов по расширению */
$blacklist = '/.(com|bat|exe|cmd|vbs|msi|jar|php(\d?)|phtml|access|js)$/i';
/* Если файл содержит запрещенное разрешение - выход с уведомлением*/
if (preg_match($pattern, $_FILES['file']['name']))
{
exit ("Файл с данным расширением запрещен к загрузке");
}

$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
{
echo "Файл загружен.\n";
}
else
{
echo "Файл не загружен.\n";
}
?> 


Если Вам все же нужно загружать файлы с расширением php, то как вариант, можно поменять их расширение на .txt.



<?php
  // Обработчик формы загрузки
  if(!empty($_FILES['filename']['tmp_name']))
  {
    // Извлекаем расширение
    $ext = strtolower(strrchr($_FILES['filename']['name'], "."));
    // Запрещенные форматы
    $extentions = array(".phtml", ".php", ".html", ".htm", ".pl",
                        ".xml", ".inc");
    // Проверка расширения по
    // списоку запрещенных файлов
    if(in_array($ext, $extentions))
    {
      $pos = strrpos($_FILES['filename']['name'], ".");
      $path = substr($_FILES['filename']['name'], 0, $pos).".txt";
    }
    else
    {
      $path = $_FILES['filename']['name'];
    }
    // Сохраняем файл в текущем каталоге
    if(copy($_FILES['filename']['tmp_name'], $path))
    {
      echo "Файл успешно загружен - $path";
    }
  }
?>


Файлы загружаются в папку .htaccess. С ее помощью можно переопределить обработчик исполняемых файлов php, perl воспринимать их как текстовые:
RemoveHandler .php .phtml .pl
AddType text/plain .php .phtml .pl

Еще один вариант – в папке прописываем запрет на исполнение скриптов:

Options -ExecCGI
AddHandler cgi-script .pl .py .php .jsp. htm .shtml .sh .asp .cgi

Полезные ссылки: url адреса
Категория: PHP, Скрипты Теги: 

Популярные записи:

Скрипт OsTicket для организации службы поддержки Скрипт OsTicket для организации службы поддержки

Оставить комментарий или два

Отправить коментарий

Test

Яндекс.Метрика