The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Обфускация структуры полей в базе д..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Обфускация структуры полей в базе д..."  +/
Сообщение от auto_tips (ok) on 19-Янв-16, 08:23 
Хорошим примером защиты данных в разных базах является их шифрование. Для хранения паролей используют лишь хеш. А хеш, как известно, необратим. Нижепредложенный perl-скрипт хорош для огораживания структуры полей таблиц баз данных под управлением MySQL 5.x.  Обфускация полей базы вкупе с шифрованием данных может минимизировать потери в случае эксплуатации sql-injection уязвимостей и утечки данных.
В качестве аргументов передаётся файл с SQL-дампом структуры БД и "соль" к хэшу. На выходе формируется файл с полями, заменёнными на нечитаемые наборы символов, что затрудняет определение суть хранимых в полях данных (если данные в БД хранятся в зашифрованном виде).

Код ниже:

   use Digest::SHA qw(sha256_hex);
   print "-------------------------------------\n";
   print "db_obfuscator started\n";
   if (($#ARGV + 1)<2)
   {
        print "run $0 db_name.sql pass\n";
        print "-------------------------------------\n";
        die;
   }
   my $db_filename = $ARGV[0];
   my $db_filename_out =  $ARGV[0];
   $db_filename_out =~ /(\w+)\.(\w+)/;
   $db_filename_out = $1 . "_out." . $2;
   my $base_hash = sha256_hex($ARGV[1]);
   my $hash_str = $base_hash . "test_str";
   my $text;
   $q = sha256_hex($hash_str);
   #print "$hash_str = $q\n";

   $filesize  = -s $db_filename;
   open DB,"<", $db_filename or die "could not open $db_filename\n";
   my $filesize_test = read (DB, $text, $filesize);
   print "read $filesize_test bytes from $db_filename\n";
   close DB;
   my @matches  = ($text =~ /\`[a-z,_,0-9]+\`/g);
   #print "found @matches.lenght() \n";
   foreach $abc(@matches)
   {
        $q = sha256_hex($base_hash.$abc);
        $text =~s/$abc/\`$q\`/g;
   #       print "$abc = $q\n";
   }
   open (outfile, ">", $db_filename_out);
   printf outfile $text or die "could not write $db_filename_out\n";
   close(outfile);
   my $filesize_out = -s $db_filename_out;
   print "wrote $filesize_out bytes into $db_filename_out\n"


URL:
Обсуждается: https://www.opennet.ru/tips/info/2935.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Обфускация структуры полей в базе данных"  +1 +/
Сообщение от cmp (ok) on 19-Янв-16, 08:23 
Отличный пример говнокода, уважаемый, если уж постите что-то, то хоть хелпу вбейте в код, иначе проще самостоятельно написать.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Обфускация структуры полей в базе данных"  +1 +/
Сообщение от Аноним (??) on 19-Янв-16, 09:12 
if (($#ARGV + 1)<2)

гениально

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Обфускация структуры полей в базе данных"  +/
Сообщение от Approximator on 19-Янв-16, 09:47 
Коллеги, не пинайте студента. Сейчас руки отобьёте, озлобится и пойдёт семки грызть по подъездам с охотой крепкой.
Человек решил для себя конкретную задачу. Молодец.

Но автору: однако, комментировать код полезно не только лишь для тех, кто не смотрит в завтрашний день ...

:-)

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Обфускация структуры полей в базе данных"  +/
Сообщение от _KUL (ok) on 19-Янв-16, 10:21 
Да и say уже пора использовать, не зря же за разрабы беспокоятся, кол-во символах в популярных командах уменьшают :)
perl -e "use v5.10; if (scalar @ARGV < 2) {say \"Is bad\";};"
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Обфускация структуры полей в базе данных"  +/
Сообщение от _KUL (ok) on 19-Янв-16, 10:25 
> Коллеги, не пинайте студента. Сейчас руки отобьёте, озлобится и пойдёт семки грызть
> по подъездам с охотой крепкой.
> Человек решил для себя конкретную задачу. Молодец.
> Но автору: однако, комментировать код полезно не только лишь для тех, кто
> не смотрит в завтрашний день ...
> :-)

Наоборот, пристыдят и он на зло всем хихикающим, пойдёт и плюсы по Страуструпу выучит!
p.s. хорошая книжка http://www.ozon.ru/context/detail/id/25227935/ а потом вот эту интересно читать http://www.ozon.ru/context/detail/id/4289407/

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "Обфускация структуры полей в базе данных"  +/
Сообщение от Аноним (??) on 19-Янв-16, 11:17 
Вы не поняли, это видимо юмор такой, типа "обфускация кода для обфускации". Старая школа, респект за ($#ARGV + 1)<2 и @matches  = ($text =~ /\`[a-z,_,0-9]+\`/g).


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

7. "Обфускация структуры полей в базе данных"  +/
Сообщение от Andrey Mitrofanov on 19-Янв-16, 11:42 
> кол-во символах в
> уменьшают :)
> perl -e "use v5.10; if (scalar @ARGV < 2) {say \"Is bad\";};"

"...\"...\"..."  =>  '..."..."...'  //Что ты сделал в свои годы для ш-ш-перла?

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

8. "Обфускация структуры полей в базе данных"  +/
Сообщение от qqq (??) on 19-Янв-16, 13:30 
Мало перереименовать поля в дампе БД, нужно ведь и клиентский код исправить, чтобы там использовались новые имена полей. Не будешь же везде писать
$sql = "SELECT " . sha256_hex($base_hash."name") . ", " . sha256_hex($base_hash."bdate") . " FROM user";
вместо
$sql = "SELECT name,bdate FROM user";

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Обфускация структуры полей в базе данных"  +/
Сообщение от _KUL (ok) on 19-Янв-16, 15:41 
Вы уверены, что я не из самодельного интерпретатора передаю строку с коммандами, который не понимает обработку одинарных кавычек?
В файле программы слешей не было бы.
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "Обфускация структуры полей в базе данных"  +/
Сообщение от 3619629066 email on 19-Янв-16, 16:07 
В том то весь и замут. В клиенском коде пиши имена в кавычках
char *sql_str= "select `name` from `users`;";
И парсер так-же всё обработает.
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

11. "Обфускация структуры полей в базе данных"  +/
Сообщение от Crazy Alex (ok) on 20-Янв-16, 04:43 
И что здесь неясного?
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

12. "Обфускация структуры полей в базе данных"  +/
Сообщение от Crazy Alex (ok) on 20-Янв-16, 04:48 
(@ARGV < 2) было бы чуть короче, но по-моему не принципиально.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

14. "Обфускация структуры полей в базе данных"  +/
Сообщение от Аноним (??) on 20-Янв-16, 21:04 
> В том то весь и замут. В клиенском коде пиши имена в
> кавычках
> char *sql_str= "select `name` from `users`;";
> И парсер так-же всё обработает.

Я одного не пойму. А что, просто взять Green SQL и адекватно его настроить - или просто проверять передаваемые в предикат поля на предмет наличия там UNION - это не комильфо? Обязательно надо вот так, автогеном, через ж.пу, без наркоза - и при этом надеяться, что  _вот это вот_ поможет?

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

15. "Обфускация структуры полей в базе данных"  +/
Сообщение от Аноним (??) on 21-Янв-16, 15:10 
> В том то весь и замут. В клиенском коде пиши имена в
> кавычках
> char *sql_str= "select `name` from `users`;";
> И парсер так-же всё обработает.

Тогда где здесь защита от sql-injections?

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

16. "Обфускация структуры полей в базе данных"  +/
Сообщение от 3619629066 email on 21-Янв-16, 17:38 
>Тогда где здесь защита от sql-injections?

Слонопок? Защита от защиты же.
Базу тырят и вместо структуры видят антиструктуру. База коллапсирует, все коллапсируют.

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

17. "Обфускация структуры полей в базе данных"  +/
Сообщение от hyphop on 22-Янв-16, 22:13 
Мне тоже понравилась эта строча ))) Так за то и любим перл - что можешь писать как захочется )))
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

18. "Обфускация структуры полей в базе данных"  +/
Сообщение от Аноним (??) on 05-Фев-16, 08:36 
Конечно, хакеры взломавшие сервер настолько глупые что совсем не поймут что это у них тут в базе. А зачем они вообще сервер ломали?
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру