Савелей
Новичок
Безопасность в скрипте для отдачи файлов
Прошу Вас как профи в php кодинге проверить на безопасность.
Что я еще упустил...
PHP:
require_once("_config_inc_scan_dir.php");
$directory = (isset($_GET['directory']) ? $_GET['directory'] : "");
$filename = (isset($_GET['filename']) ? $_GET['filename'] : "");
$filename = basename($filename);
if(!empty($filename) ? $filename : die);
$ext = substr(strrchr($filename, '.'), 1);
$ext = strtolower($ext);
if (is_array($MY['DENY']))
{if ((in_array($ext, $MY['DENY'])) || (!in_array($ext, $MY['LIST']))) die('ERROR: DENY ALL FILE, IP BLOCK');
}
else
{die('ERROR: DENY FOR ALL');
}
// Определяем дир.
$current_dir = FILE_DIR;
if ($directory != '')
$current_dir.="/$directory";
if (!file_exists("$current_dir/$filename"))
{
Header("HTTP/1.0 404 Not Found");
echo "<div align=\"center\">Недоступен</div>";
exit();
}
else
{
$size = filesize("$current_dir/$filename");
//Forzo il salvataggio con un determinato nome
header("Content-Type: application/force-download; name=\"$filename\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
@readfile("$current_dir/$filename");
exit();
}
$MY['DENY'] содержит запрещенные ext
$MY[LIST] содержит разр. ext
где 'ERROR: DENY ALL FILE, IP BLOCK будет блокировать IP
Что я еще упустил...
