Вопрос для новичков в php

Непопадающие в другие разделы и прочие философские темы

Вопрос для новичков в php

Сообщение Rostov114 » 02 ноя 2008, 04:44

Где в этом скрипте имеется уязвимость?
И способы ее исправления?
Код: Выделить всёРазвернуть
<?

//$filename = $_SERVER['DOCUMENT_ROOT']."/components/com_datsogallery/img_originals/".$_GET['file'];
$filename = $_SERVER['DOCUMENT_ROOT']."/images/dasha/galery/l/".$_GET['file'];

if(ini_get('zlib.output_compression'))
  ini_set('zlib.output_compression', 'Off');

$file_extension = strtolower(substr(strrchr($filename,"."),1));

switch( $file_extension ) {
  case "gif": $ctype="image/gif"; break;
  case "png": $ctype="image/png"; break;
  case "jpeg":
  case "jpg": $ctype="image/jpg"; break;
  default: $ctype="application/force-download";
}
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
exit();
?>
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3199
Зарегистрирован: 18 окт 2007, 02:21

Re: Вопрос для новичков в php

Сообщение DPX-Infinity » 02 ноя 2008, 20:16

это проверка какаято типа обучалки или именно вопрос?)
если первое, то новички, лучше разберитесь сначала сами)
ошибка: имени файла напрямую присваивается строка из запроса:
$filename = $_SERVER['DOCUMENT_ROOT']."/images/dasha/galery/l/".$_GET['file'];
так делать нельзя, ибо нехороший человек может вызвать скрипт так:
http://blablabla.vfose.ru/thisscript.ph ... etc/shadow
к примеру. просто один из вариантов. для винды может быть по-другому. таким образом можно вытащить дохренищи вещей с машины.
способ решения - например, удалять из $_GET['file'] начальные ../или что-то подобное, или выводить ошибку при таком обращении и т.п.
Изображение
Переходите на Jabber! За ним будущее!
Желаю вам опенсорса!
Аватара пользователя
DPX-Infinity
Активный участник
 
Сообщения: 723
Зарегистрирован: 02 сен 2007, 20:45
Откуда: Саратов

Re: Вопрос для новичков в php

Сообщение Rostov114 » 03 ноя 2008, 00:28

Ну....
Так не интерестно...
:) Я вообщето знал....поэтому для новичков и создал....взято вот откуда http://www.sagalova.ru/components/com_d ... ration.php
Офф сайт дашки сагаловой(известна по фильму счастливы вместе).
Сообщил администрации с примерами решения...по сей день нету реакции.
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3199
Зарегистрирован: 18 окт 2007, 02:21


Вернуться в Разное

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13