X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Проверка расширения файла регуляркой
Kuchuluk
Kuchuluk
Topic Starter сообщение 19.3.2013, 20:51; Ответить: Kuchuluk
Сообщение #1


сделал код для проверки расширения файла
$file_name = "dreamweaver...exe";
$a = preg_match_all("#\.#",$file_name,$karman);
var_dump($karman);
if (count($karman[0]) != 1)
{
echo "Расширение файла задано не правильно";
}
else
{
$rashirenie = preg_match("#.+?\.([a-z]+)#",$file_name,$karman);
var_dump($karman);
$a = $karman[1];
switch ($a)
{
  case "exe" : $vivod = "Исполняемый файл. Расширение exe"; break;
  case "doc" : $vivod = "Вордовский документ. Расширение doc"; break;
  case "txt" : $vivod = "Текстовый файл. Расширение txt"; break;
  case "jpg" : $vivod = "Точечный рисунок. Расширение jpg"; break;
  case "jpeg" : $vivod = "Точечный рисунок. Расширение jpeg"; break;
  case "gif" : $vivod = "Точечный рисунок. Расширение gif"; break;
}
echo "<br>".$vivod."<br><br>";
}

первое условие проверяет - если в файле больше одной точки, то файл не допускается, это для того чтобы пользователи не могли закачать на сервер файл с двойным расширением. Но ведь в названии файла могут использоваться точки, но но этот код получается не допустит такой файл. Не могу никак придумать так, чтобы скрипт проверял наличие точки именно перед расширением, а не во всем имени файла. Может кто делал что-нибудь подобное, подскажите пожалуйста.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 19.3.2013, 21:22; Ответить: yury_mw
Сообщение #2


Kuchuluk, используйте, например, такую функцию
function get_file_extension($fname) {
  return pathinfo($fname, PATHINFO_EXTENSION);
}

Она работает с неограниченным количеством точек в имени файла.
И не морочьте себе голову регулярками, это не тот случай.

Но если очень хочется, то вот функция с регэкспом
function get_file_extension($fname) {
  return preg_replace("/.*?./", '', $fname);
}
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 19.3.2013, 21:56; Ответить: Kuchuluk
Сообщение #3


спасибо. еще можно уточнить - эта функция не уязвима для хакеров? если пользователь попытается загрузить исполняемый файл, но в конце припишет расширение например jpg?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 19.3.2013, 22:02; Ответить: yury_mw
Сообщение #4


Конечно, уязвима.
Она же никак не проверяет, что там внутри файла, только его имя смотрит и вырезает из имени то, что после последней точки.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 19.3.2013, 22:09; Ответить: Kuchuluk
Сообщение #5


yury, мне не хочется использовать именно регулярку, хочется, чтобы защита надежная была

(yury @ 20.3.2013, 01:02) *
Конечно, уязвима.
Она же никак не проверяет, что там внутри файла, только его имя смотрит и вырезает из имени то, что после последней точки.

а есть функция, которая проверяет сам тип файла?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 19.3.2013, 22:10; Ответить: yury_mw
Сообщение #6


Существует много вариантов контроля. И проверять надо, естественно, не имя файла, а содержимое. Хотя файлы с расширением php — можно и нужно отсекать сразу.
Вот, например, статья на эту тему: Безопасная загрузка изображений
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 19.3.2013, 22:19; Ответить: Kuchuluk
Сообщение #7


[member=yury], спасибо огромное! очень хорошая статья!

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Проверка позиций сайтов в поисковых системах с помощью Positon.ru
Мониторинг продвижения сайтов
182 Positon 178946 23.2.2024, 9:53
автор: Positon
Открытая тема (нет новых ответов) Проверка качества прогона по трастовым сайтам, профилям, каталогам
0 bestweb20_mw 1383 21.12.2017, 18:36
автор: bestweb20_mw
Открытая тема (нет новых ответов) Фейк вконтакте - лучшая фотомодель (проверка на валид, админка)
0 Quant 2204 26.5.2017, 14:33
автор: Quant
Горячая тема (нет новых ответов) Чистим сайты от вирусов, рекомендации, проверка сервера на уязвимость!
80 Rxp 56450 16.2.2017, 15:05
автор: Andro11
Открытая тема (нет новых ответов) Чекер-сервис аккаунтов, проверка баз e-mail, профилей, блогов
19 KrisGuseva 18956 30.7.2015, 3:05
автор: KrisGuseva


 



RSS Текстовая версия Сейчас: 29.3.2024, 14:37
Дизайн