|
|
|
| Здравствуйте, в общем появилась задача загружать файлы на сервер, но не через форму($_FILES), а указанием ссылки на файл, который должен быть указан. Указывается в форме в текстовом поле. например ссылка http://site.ru/picture.jpg
Реализовал это следующим образом:
$un=time().".jpg";
$_POST['file_link']=htmlspecialchars(substr($_POST['file_link'],0,50));
if(preg_match("/[jpg]$/",$_POST['file_link']) and getimagesize($_POST['file_link']))
copy($_POST['file_link'],"./upl_files/".$un);
|
Вот хотелось бы про безопасность мною реализованного способа узнать, не получится ли залить таким образом шелл или какой нить скрипт. Проверку на размер файла мне делать не нужно.
да кстати в папку "upl_files" поставил права на чтение и запись для всех,а выполнение убрал. положил еще .htaccess, в папку, вот с таким содержанием:
AddType text/plain .php .phtml
AddHandler -cgi-script .pl .cgi
|
Жду комментариев, спасибо. | |
|
|
|
|
|
|
|
для: CrazyAdmin
(16.01.2007 в 23:53)
| | Вы хотите разрешить загружать только картинки?
Кстати, ваш скрипт не будет работать.
Вот рабочий вариант:
<?
$un = time().".jpg";
if ( preg_match("/[jpg]{1}$/", $_POST['file_link']) ) {
$file = file_get_contents($_POST['file_link']);
$fp = fopen("./upl_files/".$un, "w");
fwrite($fp, $file);
fclose($fp);
}
|
| |
|
|
|
|
|
|
|
для: Саня
(17.01.2007 в 12:16)
| | Почему не будет работать, из-за htmlspecialchars ?
А вот под этим, я думаю подразумевалось, что имя файла должно оканчиваться на "jpg" :
preg_match("/[jpg]$/",$_POST['file_link'])
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(17.01.2007 в 12:44)
| | Это, что называется, написал не подумав. =)
Вообще скрипт рабочий, но htmlspecialchars() тут лишнее. | |
|
|
|
|
|
|
|
для: Саня
(17.01.2007 в 13:01)
| | работать то он работает, меня волнует безопасность. соблюдена ли она? | |
|
|
|