Личные сообщения

Ваши переписки

Логотип сайта
главная правила форум опубликовать полезные сервисы услуги
вход или регистрация обратная связь

Мир шаблонов » Полезности, хаки DLE » Доступность - защита файлов в закрытых разделах в DLE
0

Доступность - защита файлов в закрытых разделах в DLE

Доступность - защита файлов в закрытых разделах в DLE


Есть одна лазейка в DLE, которая позволяет скачивать файлы из новости, даже если эта новость находится в скрытом разделе.

В случае, к примеру, с созданием раздела VIP этот вопрос довольно таки актуален.

Давайте для начала рассмотрим ту защиту, которая собственно и не дает нам свободно скачать файл по прямой ссылке /engine/download.php?id=123

Преграда №1.
Настройки групп пользователей. Т.е. скачивать файлы могут только те пользователи, которым это разрешено в настройках группы. Остальные получают ошибку "Access denied".

Преграда №2.
Скорее чисто символическая, защита от не продвинутого пользователя. Проверяется реферер, т.е. файл будет доступен только в том случае, если пользователь кликнул по ссылке на сайте. Но нам же ничего не мешает самому подправить код странички и вставить туда ссылок с любым ID.

А теперь вспомним еще о 2х параметрах, которые так же следовало бы учесть:
Параметр №1.
При добавлении новости, в закладке "доступ" можно определенной группе выставить уровень доступа "запретить просмотр". Но если в новости находится ценный файл который доступен только перечисленным группам, то злоумышленник все равно сможет получить доступ к файлу простым перебором.

Параметр №2.
В настройках групп пользователей в параметре "Доступные разделы" можно перечислить список категорий к которым будет открыт доступ. Получается та же ситуация. Простым методом перебора ID файлов можно будет скачать любой файл, даже не имея доступа в закрытый раздел.


Со вступлением разобрались. Теперь, собственно, решение данной проблемы:

Открыть файл engine/download.php

Найти строку:

$row = $db->super_query ( "SELECT name, onserver FROM " . PREFIX . "_files WHERE id ='$id'" );

Заменить на (Для DLE 9.6 и старше):

$row = $db->super_query ( "SELECT name, onserver, access, category FROM " . PREFIX . "_files f LEFT JOIN ".PREFIX."_post_extras e ON e.news_id=f.news_id LEFT JOIN ".PREFIX."_post p ON f.news_id=p.id WHERE f.id ='$id'" );

if($row['access']){
	$row['access'] = explode(",",$row['access']);
	if(!in_array($member_id['user_group'],$row['access'])) die("Access denied");
}
if($user_group[$member_id['user_group']]['allow_cats'] AND $user_group[$member_id['user_group']]['allow_cats']!='all'){
	$allow_cats = explode(",",$user_group[$member_id['user_group']]['allow_cats']);
	$deny = true;
	if(strpos($row['category'],",")!==false){
		$row['category'] = explode(",",$row['category']);
		foreach($row['category'] as $cat) if(in_array($cat,$allow_cats)) $deny = false;
	}else{
		$row['category'] = intval($row['category']);
		if(in_array($row['category'],$allow_cats)) $deny = false;
	}
	if($deny) die("Access denied!");
}

Для младших версий DLE вставить:

$row = $db->super_query ( "SELECT name, onserver, access, category FROM " . PREFIX . "_files f LEFT JOIN ".PREFIX."_post p ON f.news_id=p.id WHERE f.id ='$id'" );

if($row['access']){
	$row['access'] = explode(",",$row['access']);
	if(!in_array($member_id['user_group'],$row['access'])) die("Access denied");
}
if($user_group[$member_id['user_group']]['allow_cats'] AND $user_group[$member_id['user_group']]['allow_cats']!='all'){
	$allow_cats = explode(",",$user_group[$member_id['user_group']]['allow_cats']);
	$deny = true;
	if(strpos($row['category'],",")!==false){
		$row['category'] = explode(",",$row['category']);
		foreach($row['category'] as $cat) if(in_array($cat,$allow_cats)) $deny = false;
	}else{
		$row['category'] = intval($row['category']);
		if(in_array($row['category'],$allow_cats)) $deny = false;
	}
	if($deny) die("Access denied!");
}

Источник: _http://SanDev.pro/
Поделиться: Понравилась новость? Расскажи друзьям. Поблагодари проект!


Уважаемый посетитель нашего сайта! Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем. Спасибо за внимание!

Тегихаки dle, доступность файлов, защита от скачивания
Публикацию посмотрели 744 раз(а) и написали 0 комментариев.

Похожие публикации

 Вывод количество новостей на главной для DLE 9.x - 10.x 
Хак будет направлен на вывод количества новостей на главной странице DLE: 1. Вывод общего количества новостей; 2. Вывод количества новостей за месяц; 2. Вывод количества новостей за неделю; 2. Вывод количества новостей за день;*...
 Шаблон СSS Template 2.0 для DLE 9.8 [Оригинал] 
Дорогие друзья. После длительного перерыва, команда Российской школы CSS и GZweb Interfaces готова представить Вам обновление шаблона CSS Template 2.0. Он позволит не только изучить современные приемы верстки страниц и разработки сайтов, но и...
 Вывод количества новостей в меню (категориях) для DLE 
Очень полезный хак который позволяет вывести в меню общее количество новостей в категории или подкатегории, а также количество новостей добавленных за сегодня. Единственное, что нужно знать для этого - это id категории....
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
разделы сайта

последние комментарии
  • gushnick 20.04.2017
    Огромная коллекция модулей для ... (2)
    gushnick-фото
    крутой наборчик даже не думал что такие бывают. мульти доставка стала как родная
  • pavel47 04.04.2017
    Генератор продающих и подписны ... (6)
    pavel47-фото
    пере залейте файл выходит сообщение: Такого файла не существует, доступ к нему ограничен или он был удален из-за нарушения авторских прав.
  • dmitryony 29.03.2017
    Kiddos - Hand Crafted Kids Ope ... (3)
    dmitryony-фото
    Цитата: seriy99
    Цитата: dmitryony
    Немогу никак поставить, чтобы отображались стили в шрифтах в русской также как в англ. версии сайта. Все уже настроил, а тут ступор. Перерыл все настройки. Нивкакую. Работал кто-то уже с этой темой? Как настроить это? Такое по всему сайту, а не только в меню. В теме есть 2 шрифта: Cabin Sketch и Titilliunm web. Именно они некоректно отображаются в рус версии.

    Нужно вручную стили поправить (если в админке это не предусмотрено) - правим файл стилей сss темы. Т.е. вместо стандартного шрифта шаблона - ставим свой любой.

    Спасибо! Я уже понял, что в Cabin Scetch просто нету кириллицы. Нашел похожий. Но где именно найти этот файл стилей, в который надо внести правки. Там столько файлов и папок, что сложно определить. Подскажите пожалуйста!
  • seriy99 28.03.2017
    Kiddos - Hand Crafted Kids Ope ... (3)
    seriy99-фото
    Цитата: dmitryony
    Немогу никак поставить, чтобы отображались стили в шрифтах в русской также как в англ. версии сайта. Все уже настроил, а тут ступор. Перерыл все настройки. Нивкакую. Работал кто-то уже с этой темой? Как настроить это? Такое по всему сайту, а не только в меню. В теме есть 2 шрифта: Cabin Sketch и Titilliunm web. Именно они некоректно отображаются в рус версии.

    Нужно вручную стили поправить (если в админке это не предусмотрено) - правим файл стилей сss темы. Т.е. вместо стандартного шрифта шаблона - ставим свой любой.
  • dmitryony 20.03.2017
    Kiddos - Hand Crafted Kids Ope ... (3)
    dmitryony-фото
    Немогу никак поставить, чтобы отображались стили в шрифтах в русской также как в англ. версии сайта. Все уже настроил, а тут ступор. Перерыл все настройки. Нивкакую. Работал кто-то уже с этой темой? Как настроить это? Такое по всему сайту, а не только в меню. В теме есть 2 шрифта: Cabin Sketch и Titilliunm web. Именно они некоректно отображаются в рус версии.
поддержать проект
подписаться на новости
OpenCart
Подписаться на канал RSS Добавить сайт в закладки
популярные публикации
партнеры сайта

рекомендуем
Hosting Ukraine
© 2013-2016 mirshablonov.com