Шифрование расшифровывать PL SQL Пакеты в oracle - PullRequest
1 голос
/ 26 февраля 2020

Есть ли способ зашифровать пакеты SQL (хранимая процедура, функции и т. Д. c) в oracle, используя ключ c Speci, и расшифровать, используя тот же ключ в целях безопасности ??? Я использую oracle 12 c ....

Спасибо,

Ответы [ 3 ]

4 голосов
/ 26 февраля 2020

Да, для этого вы можете использовать инструмент wrap, см. PL / SQL Обтекание исходного текста

Вы можете обернуть исходный текст PL / SQL, тем самым запретить кому-либо отображать этот текст с помощью stati c представлений словаря данных *_SOURCE.

В принципе расшифровка не поддерживается, однако вы можете использовать такие инструменты, как Unwrap It! .

0 голосов
/ 10 марта 2020

Использование функции переноса - только обфускация , но не шифрование. Он легко отменяется различными доступными веб-сайтами, сценариями python и другими процедурами PL / SQL. Существуют дополнительные запутывания, которые вы можете сделать, чтобы сделать интерпретацию вашего кода более сложной (Oracle s SQL Developer имеет некоторые встроенные функции для этого), так что даже если ваш код развернут, его все равно трудно читать. Вот пример еще одного пользовательского набора инструментов для запутывания: https://pmdba.wordpress.com/2020/02/24/code-obfuscation-toolkit/. Для коммерческого инструментария, проверьте это: http://www.petefinnigan.com/products/pfclobfuscate.htm

0 голосов
/ 27 февраля 2020

Мне нравится ответ Вернфрида. Я хотел бы немного расширить, если можно.

Если вы попробуете метод WRAP (некоторые говорят, что его легко взломать), вот несколько способов проверить его эффективность:

  • Проверьте с помощью tkprof, обнаруживает ли выполнение объектов WRAPd какие-либо логи c или SQL
  • Проверьте V $ SQL и связанные представления, чтобы увидеть, если при выполнении объектов WRAPd обнаруживаются какие-либо логи c или SQL
  • Обратитесь к OEM, чтобы узнать, показывает ли выполнение объектов WRAPd какие-либо логики c или SQL

Я никогда не проверял выше, но если бы я рассматривал возможность использования Я бы сделал так, чтобы я знал пределы любой защиты, которую он дает Учитывая важность того, чтобы администраторы баз данных могли отслеживать и настраивать запросы, я был бы удивлен, если бы SQL, по крайней мере, не был определен с помощью стандартных представлений / запросов производительности.

Также обратите внимание, если ваш код имеет какую-либо динамику c SQL или PL SQL, это может отображаться в таблице символов упакованного файла (в виде шестнадцатеричных кодов).

Я думаю, что вы не можете обернуть код TRIGGER (хотя, конечно, у вас могут быть триггеры, вызывающие процедуры PL SQL, которые обернуты).

Если вы являетесь поставщиком программного обеспечения, обеспокоенным поиском клиентских DBA вокруг вашего кода, учитывая вышеприведенный пункт о SQL мониторинге и предположении, что администратор БД имеет доступ к подходящему взломщику, я не думаю, что вы можете многое сделать, чтобы остановить их Возможно, вы сможете помешать пользователям, не являющимся администраторами баз данных, сделать это, ограничив доступ к DBA_SOURCE, V $ SQL и связанным представлениям.

Из интереса я взглянул на собственную компиляцию PL SQL, чтобы увидеть, может ли скомпилированный М-код быть доставлен вместо источника PL SQL, но кажется, что вам необходимо также отправить код PL SQL.

Какие есть другие варианты? Можно ли подключить PL SQL к удаленной защищенной базе данных и использовать ее через вызовы REST API? Это сильно зависит от логики приложения c и доступа к данным, и если выполнимо иметь такую ​​службу на защищенном удаленном сервере.

Последнее, что я хотел бы рассмотреть, если бы было абсолютно необходимо скрыть логи c будет реализовано как модули Pro C / C / Java для создания ВНЕШНИХ БИБЛИОТЕК. Но обратите внимание, что и здесь SQL вызовы в Pro C / C / Java будут по-прежнему выставляться в V $ SQL. Плюс, вокруг не так много людей, которые пишут Pro *C.

...