PHP cкрипт загрузки файлов на сервер. Как избежать уязвимости скрипта ?

12 3
SE
На сайте с 11.02.2007
Offline
13
3455

PHP cкрипт загрузки файлов на сервер. Как избежать уязвимости скрипта ?

Пример скрипта (без фильтров)


<?php
if(!empry($_FILES['filename'] ['tpm_name']))
{
if (copy($_FILES['filename'] ['tpm_name'], $_FILES['filename']['name']))
{
echo" Файл успешно загружен - <a href=".
$_FILES['filename']['name'].">".
$_FILES['filename']['name']."</a>";
}
}
?>
Обмен ссылками Авто-Мото, Пишу PHP скрипты любой сложности, Продажа Запчастей на Японские Авто и Спецтехнику
DU
На сайте с 20.10.2006
Offline
105
#1

Ложить файлы ниже корня сайта. Остальные методы оценить сложно, т.к. не извесно как Вы вызываете скрипт

edogs software
На сайте с 15.12.2005
Offline
775
#2

Не empry, а empty... не tpm_name, а tmp_name.. не copy, а move_uploaded_file.

Никакой уязвимости в таком скрипте нет и не может быть по определению... ибо Вы не сказали о каких-либо ограничениях.

Уязвимость (по определению) это когда скрипт делает что-то, что непредусмотрено создателем. Этот Ваш скрипт ничего такого делать не может.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
SE
На сайте с 11.02.2007
Offline
13
#3
DIMON-UA:
Ложить файлы ниже корня сайта.

Забыли добавить если есть такая возможность..

DIMON-UA:
Остальные методы оценить сложно, т.к. не извесно как Вы вызываете скрипт

Зайдя на сайт любой может добавить свой файл(картинку) через форму на сайте.

Обработчик формы см. выше. Скрипту передаються данные методом post

DU
На сайте с 20.10.2006
Offline
105
#4
edogs:
Не empry, а empty... не tpm_name, а tmp_name.. не copy, а move_uploaded_file.
Никакой уязвимости в таком скрипте нет и не может быть по определению... ибо Вы не сказали о каких-либо ограничениях.
Уязвимость (по определению) это когда скрипт делает что-то, что непредусмотрено создателем. Этот Ваш скрипт ничего такого делать не может.

Скрипт не может, загруженый файл может.

DU
На сайте с 20.10.2006
Offline
105
#5
S.E.O:
Забыли добавить если есть такая возможность..




Зайдя на сайт любой может добавить свой файл(картинку) через форму на сайте.
Обработчик формы см. выше. Скрипту передаються данные методом post

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

SE
На сайте с 11.02.2007
Offline
13
#6
edogs:
Не empry, а empty... не tpm_name, а tmp_name.. не copy, а move_uploaded_file.

Скрипт исправлять не нужно....просто нужно добавить фильтр..

edogs:
Этот Ваш скрипт ничего такого делать не может.

Он записывает файлы на сервер и тутже выводит ссылку на файл...Вы наверно не внимательно смотрели..

SE
На сайте с 11.02.2007
Offline
13
#7
DIMON-UA:
Необходимо проверять тип файла и загружать только разрешенный.

А примерчик на php если не трудно ?

DU
На сайте с 20.10.2006
Offline
105
#8

$_FILES['filename']['type']

SE
На сайте с 11.02.2007
Offline
13
#9

DIMON-UA,

С обработчиком что-то типа этого получиться ?


if(!empry($_FILES['filename'] ['tpm_name']))
{
$ext = strtolower(strrchr($_FILES['filename']['name'),".")); $extentions = array(".jpg", ".gif");
if(in_array($ext, $extentions))
{

if (copy($_FILES['filename'] ['tpm_name'], $_FILES['filename']['name']))
{
echo" Файл успешно загружен- <a href=".
$_FILES['filename']['name'].">".
$_FILES['filename']['name']."</a>";
}
}

else
{
Echo" Разрешена загрузка только изображений ";

}
}
SE
На сайте с 11.02.2007
Offline
13
#10
DIMON-UA:
$_FILES['filename']['type']

Как лучше делать то? Как я написал или как вы предложили ?

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий