Ищу Шифрование attachment

Тема в разделе "DLE", создана пользователем ElemenT71, 6 май 2009.

Информация :
Актуальная версия DataLife Engine 11.2
( Final Release v.11.2 | Скачать DataLife Engine | Скачать 11.2 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.1 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. ElemenT71

    ElemenT71 Писатель

    Регистр.:
    3 май 2009
    Сообщения:
    8
    Симпатии:
    0
    Мне нужен хак или модуль, который шифрует attachment. У меня недавно с сайта украли файл из под хайда. Может шифрование attachment поможет защитить файл от кражи?
     
  2. Dark Angell

    Dark Angell Читатель

    Заблокирован
    Регистр.:
    29 фев 2008
    Сообщения:
    1.036
    Симпатии:
    690
    а лич тебя чем не устраивает то?
     
  3. ElemenT71

    ElemenT71 Писатель

    Регистр.:
    3 май 2009
    Сообщения:
    8
    Симпатии:
    0
    даж хз, просто я заношу файлы на сервак в раре или зипе, это не важно, а какие-то подонги их качают из под хайда

    личем не пробовал, а стоит? просто я думал что файлы с сервак под лич не ставятся :be:
     
  4. Demon425

    Demon425

    Регистр.:
    9 июл 2008
    Сообщения:
    439
    Симпатии:
    96
    1) Аттачмент скрывает ссылку по факту, так же как и лич, но по прямой ссылке файл можно качать
    2) если надо защититься от прямого скачивания - _http://www.armadaboard.com/articles45.htm в качестве расширений используй форматы файла (Рар, зип, мр3 или что у тебя там) ... хотя реферрер тоже можно подменить
     
  5. ElemenT71

    ElemenT71 Писатель

    Регистр.:
    3 май 2009
    Сообщения:
    8
    Симпатии:
    0
    я узнал, что они используют какой-то ajax скрипт или код чтобы вытягивать файлы из-под хайда

    никто не слышал о нём? как с ним бороться?
     
  6. Root

    Root Создатель

    Регистр.:
    29 июл 2006
    Сообщения:
    36
    Симпатии:
    21
    Ну возможно просто перебирают id файла для загрузки... выходом думаю можно добавить еще одно уникальное поле при проверке
     
  7. ElemenT71

    ElemenT71 Писатель

    Регистр.:
    3 май 2009
    Сообщения:
    8
    Симпатии:
    0
    в смысле при проверки? он же просто вводит ссылку и качет файл, какое поле? :confused:
     
  8. FlashBlack

    FlashBlack Постоялец

    Регистр.:
    19 сен 2006
    Сообщения:
    77
    Симпатии:
    45
    хм.. ну от УГ может помочь включении в конфиге настройки антилич, но эт минимальная защита.
    более опытный кул-хацкер заменит реф ссылку и скачает.

    так же остаётся хороший способ, давать ссылке ИД в виде хеш-кода
    т.е. будет не [attachment=1], а [attachment=dc265441cd13079b61d6a2dd284c2193]
     
  9. [pzn] Spider

    [pzn] Spider Создатель

    Регистр.:
    29 фев 2008
    Сообщения:
    16
    Симпатии:
    0
    как так?
    подробнее плиз
     
  10. FlashBlack

    FlashBlack Постоялец

    Регистр.:
    19 сен 2006
    Сообщения:
    77
    Симпатии:
    45
    Реализовал, проверяем кому надо.

    1. Открываем файл engine/download.php

    Ище строки:
    Код:
    $id = intval ( $_REQUEST['id'] );
    
    if ($_REQUEST['area'] == "static")
        $row = $db->super_query ( "SELECT name, onserver FROM " . PREFIX . "_static_files WHERE id ='$id'" );
    else
        $row = $db->super_query ( "SELECT name, onserver FROM " . PREFIX . "_files WHERE id ='$id'" );
    Заменяем на:

    Код:
    $id = $db->safesql(trim($_REQUEST['id']));
    
    if ($_REQUEST['area'] == "static")
        $row = $db->super_query ( "SELECT name, onserver FROM " . PREFIX . "_static_files WHERE hash_id ='$id'" );
    else
        $row = $db->super_query ( "SELECT name, onserver FROM " . PREFIX . "_files WHERE hash_id ='$id'" );
    Далее заменяем строку:
    Код:
    $db->query ( "UPDATE " . PREFIX . "_static_files SET dcount=dcount+1 WHERE id ='$id'" );
    на строку:
    Код:
    $db->query ( "UPDATE " . PREFIX . "_static_files SET dcount=dcount+1 WHERE hash_id ='$id'" );
    Заменяем
    Код:
    $db->query ( "UPDATE " . PREFIX . "_files SET dcount=dcount+1 WHERE id ='$id'" );
    на строку:
    Код:
    $db->query ( "UPDATE " . PREFIX . "_files SET dcount=dcount+1 WHERE hash_id ='$id'" );
    2. Открываем файл engine/inc/files.php

    Ищем строку:
    Код:
    $db->query( "INSERT INTO " . PREFIX . "_static_files (static_id, author, date, name, onserver) values ('$news_id', '$author', '$added_time', '$image_name', '{$file_prefix}{$image_name}')" );
    заменяем на:
    Код:
    $db->query( "INSERT INTO " . PREFIX . "_static_files (static_id, author, date, name, onserver,hash_id) values ('$news_id', '$author', '$added_time', '$image_name', '{$file_prefix}{$image_name}','".md5($added_time.$image_name)."')" );
    Ищем строку:
    Код:
    $db->query( "INSERT INTO " . PREFIX . "_files (news_id, name, onserver, author, date) values ('$news_id', '$image_name', '{$file_prefix}{$image_name}', '$author', '$added_time')" );
    Заменяем на:
    Код:
    $db->query( "INSERT INTO " . PREFIX . "_files (news_id, name, onserver, author, date,hash_id) values ('$news_id', '$image_name', '{$file_prefix}{$image_name}', '$author', '$added_time','".md5($added_time.$image_name)."')" );
    Ищем строку:
    Код:
    $db->query( "SELECT id, name, onserver  FROM " . PREFIX . "_files where author = '$author' AND news_id = '$news_id'" );
    Заменяем на строку:
    Код:
    $db->query( "SELECT id, name, onserver, hash_id FROM " . PREFIX . "_files where author = '$author' AND news_id = '$news_id'" );
    Ищем строку (1ая по файлу:(
    Код:
    $file_link = "<a class=maintitle href=\"javascript:insertfile('[attachment={$row['id']}]')\">{$row['name']}</a>";
    Заменяем на вот это:
    Код:
    $file_link = "<a class=maintitle href=\"javascript:insertfile('[attachment={$row['hash_id']}]')\">{$row['name']}</a>";
    Ищем строку:
    Код:
    $db->query( "SELECT id, name, onserver  FROM " . PREFIX . "_static_files where author = '$author' AND static_id = '$news_id' AND onserver != ''" );
    Заменяем на:
    Код:
    $db->query( "SELECT id, name, onserver, hash_id  FROM " . PREFIX . "_static_files where author = '$author' AND static_id = '$news_id' AND onserver != ''" );
    Ищем строку(2ая по файлу:(
    Код:
    $file_link = "<a class=maintitle href=\"javascript:insertfile('[attachment={$row['id']}]')\">{$row['name']}</a>";
    Заменяем на вот это:
    Код:
    $file_link = "<a class=maintitle href=\"javascript:insertfile('[attachment={$row['hash_id']}]')\">{$row['name']}</a>";
    3. Открываем файл engine/modules/functions.php

    Ищем функцию:
    Код:
    function show_attach($story, $id, $static = false) {
        global $db, $config, $lang, $user_group, $member_id;
        
        if( $static ) {
            
            if( is_array( $id ) and count( $id ) ) $where = "static_id IN (" . implode( ",", $id ) . ")";
            else $where = "static_id = '$id'";
            
            $db->query( "SELECT id, name, onserver, dcount FROM " . PREFIX . "_static_files WHERE $where" );
            
            $area = "&area=static";
        
        } else {
            
            if( is_array( $id ) and count( $id ) ) $where = "news_id IN (" . implode( ",", $id ) . ")";
            else $where = "news_id = '$id'";
            
            $db->query( "SELECT id, name, onserver, dcount FROM " . PREFIX . "_files WHERE $where" );
            
            $area = "";
        
        }
        
        while ( $row = $db->get_row() ) {
            
            $size = formatsize( @filesize( ROOT_DIR . '/uploads/files/' . $row['onserver'] ) );
            $row['name'] = explode( "/", $row['name'] );
            $row['name'] = end( $row['name'] );
            
            if( ! $user_group[$member_id['user_group']]['allow_files'] ) $link = "<span class="attachment">{$lang['att_denied']}</span>";
            elseif( $config['files_count'] == 'yes' ) $link = "<span class="attachment">[URL="http://www.nulled.ws/r.php?url=http%3A%2F%2F%7B%24config%26%2391%3B"]{$row['name']}[/URL] [{$size}] ({$lang['att_dcount']} {$row['dcount']})</span>";
            else $link = "<span class="attachment">[URL="http://www.nulled.ws/r.php?url=http%3A%2F%2F%7B%24config%26%2391%3B"]{$row['name']}[/URL] [{$size}]</span>";
            
            $story = str_replace( '[attachment=' . $row['id'] . ']', $link, $story );
        }
        $db->free();
        
        return $story;
    
    }
    Заменяем её на:
    Код:
    function show_attach($story, $id, $static = false) {
        global $db, $config, $lang, $user_group, $member_id;
        
        if( $static ) {
            
            if( is_array( $id ) and count( $id ) ) $where = "static_id IN (" . implode( ",", $id ) . ")";
            else $where = "static_id = '$id'";
            
            $db->query( "SELECT id, name, onserver, dcount, hash_id FROM " . PREFIX . "_static_files WHERE $where" );
            
            $area = "&amp;area=static";
        
        } else {
            
            if( is_array( $id ) and count( $id ) ) $where = "news_id IN (" . implode( ",", $id ) . ")";
            else $where = "news_id = '$id'";
            
            $db->query( "SELECT id, name, onserver, dcount, hash_id FROM " . PREFIX . "_files WHERE $where" );
            
            $area = "";
        
        }
        
        while ( $row = $db->get_row() ) {
            
            $size = formatsize( @filesize( ROOT_DIR . '/uploads/files/' . $row['onserver'] ) );
            $row['name'] = explode( "/", $row['name'] );
            $row['name'] = end( $row['name'] );
            
            if( ! $user_group[$member_id['user_group']]['allow_files'] ) $link = "<span class=\"attachment\">{$lang['att_denied']}</span>";
            elseif( $config['files_count'] == 'yes' ) $link = "<span class=\"attachment\"><a href=\"{$config['http_home_url']}engine/download.php?id={$row['hash_id']}{$area}\" >{$row['name']}</a> [{$size}] ({$lang['att_dcount']} {$row['dcount']})</span>";
            else $link = "<span class=\"attachment\"><a href=\"{$config['http_home_url']}engine/download.php?id={$row['hash_id']}{$area}\" >{$row['name']}</a> [{$size}]</span>";
            
            $story = str_replace( '[attachment=' . $row['hash_id'] . ']', $link, $story );
        }
        $db->free();
        
        return $story;
    
    }
    Забыл добавить ;)
    В базе добавляем новую колонку с помощи кода:
    Код:
    ALTER TABLE `dle_static_files` ADD `hash_id` varchar(40) NOT NULL DEFAULT '0'
    ALTER TABLE `dle_files` ADD `hash_id` varchar(40) NOT NULL DEFAULT '0'
    где dle - заменяем на ваш префикс



    Взято с http://dle-code.com/modules/37-xak-shifrovaniya-attachment-ssylok.html
    Скрипт будет работать при загрузки новых файлов.
    Внимание: Все старые аттачи будут недоступны, рекомендуется ставить этот хак на новый(нулевой) сайт.
     
    [pzn] Spider нравится это.
Статус темы:
Закрыта.