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

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

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

Мир шаблонов » Полезности, хаки 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, доступность файлов, защита от скачивания
Публикацию посмотрели 716 раз(а) и написали 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 категории....
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
разделы сайта

последние комментарии
  • dmitryony 20.03.2017
    Kiddos - Hand Crafted Kids Ope ... (1)
    dmitryony-фото
    Немогу никак поставить, чтобы отображались стили в шрифтах в русской также как в англ. версии сайта. Все уже настроил, а тут ступор. Перерыл все настройки. Нивкакую. Работал кто-то уже с этой темой? Как настроить это? Такое по всему сайту, а не только в меню. В теме есть 2 шрифта: Cabin Sketch и Titilliunm web. Именно они некоректно отображаются в рус версии.
  • geodesist 09.03.2017
    Fastor - Multipurpose Responsi ... (5)
    geodesist-фото
    Почему-то не устанавливается на 2.3.0.2. Вверху пишет всякие неполадки и темы не появляются
  • xelsing 22.02.2017
    MUSE ГЕНЕРАТОР. Комплект Adobe ... (11)
    xelsing-фото
    Не работает что делать! Делитесь рабочей версией плз
  • seriy99 16.02.2017
    105 уникальных шаблонов инфогр ... (2)
    seriy99-фото
    Цитата: vladexus
    Жесть..такой размер и на дипозит

    Ну так скачивается же без проблем и бесплатно? ))) И много коммерческой информации, которую кому-то можно "грохнуть" с российских файлообменников. А тут хоть уверен - что прийдет пользователь и информация всегда доступна. Удачи Всем
  • vladexus 15.02.2017
    105 уникальных шаблонов инфогр ... (2)
    vladexus-фото
    Жесть..такой размер и на дипозит
поддержать проект
подписаться на новости
OpenCart
Подписаться на канал RSS Добавить сайт в закладки
популярные публикации
партнеры сайта

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