Как запутать SQL Sprocs?

Вот высокоуровневый способ работы с фибо-объектами. Если вы предпочитаете разбираться в низкоуровневых функциях, вы можете использовать отладчик, чтобы просмотреть этот код и увидеть, как он обрабатывается стандартной библиотекой MQL.

#property strict
#property indicator_chart_window
#include <chartobjects/chartobjectsfibo.mqh>

CChartObjectFibo g_fibo;

int OnInit()
{
   if(!g_fibo.Create(0, "fibo", 0, 0, 0.0, 0, 0.0))
      return INIT_FAILED;
   double levels[] = {0.0, 0.10, 0.236, 0.328, 0.5, 0.618, 0.764, 0.9, 1.0};
   int total = ArraySize(levels);
   g_fibo.LevelsCount(total);
   for(int i=0; i<total; i++) {
      g_fibo.LevelValue(i, levels[i]);
      g_fibo.LevelDescription(i, DoubleToString(levels[i] * 100, 1));
   }
   return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   int ihigh = ArrayMaximum(high, 10);
   int ilow = ArrayMinimum(low, 10);
   g_fibo.Time(0, time[ihigh]);
   g_fibo.Time(1, time[ilow]);
   g_fibo.Price(0, high[ihigh]);
   g_fibo.Price(1, low[ilow]);
   return(rates_total);
}
8
задан lc. 7 January 2009 в 16:45
поделиться

9 ответов

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

Так или иначе много SQL, который я видел здесь, стало запутываемое стандартом.

10
ответ дан 5 December 2019 в 04:58
поделиться

Если необходимо скрыть его, как насчет "С ШИФРОВАНИЕМ" пункт?

http://blog.sqlauthority.com/2007/07/01/sql-server-explanation-of-with-encryption-clause-for-stored-procedure-and-user-defined-functions/

10
ответ дан 5 December 2019 в 04:58
поделиться

Посмотрите ПАРАМЕТР ШИФРОВАНИЯ для оператора CREATE PROCEDURE.

http://msdn.microsoft.com/en-us/library/ms187926.aspx

6
ответ дан 5 December 2019 в 04:58
поделиться

Нет. По крайней мере, не способом, который необратим. SQL Server 2000 "С ШИФРОВАНИЕМ" может быть инвертирован для получения исходного простого текста. Псевдокод и сценарий T-SQL, который иллюстрирует это, здесь: http://education.sqlfarms.com/education/ShowPost.aspx?PostID=783

Примечание: Я не попробовал его SQL, 2005 или выше, но мое предположение является этим, так же уязвимо.. Поскольку документы MSDN указывают:

ШИФРОВАНИЕ Указывает, что SQL Server преобразует оригинальный текст оператора CREATE PROCEDURE к запутываемому формату.

Акцент является моим.

4
ответ дан 5 December 2019 в 04:58
поделиться

Одна опция состояла бы в том, чтобы поместить просто чувствительные части хранимой процедуры в хранимой процедуре CLR и запутать тот блок с помощью профессионального продукта путаницы.

http://msdn.microsoft.com/en-us/library/ms131094.aspx

2
ответ дан 5 December 2019 в 04:58
поделиться

Можно всегда писать обычный код в C# (или VB) и хранить его вне базы данных в DLL.

Затем Вы не должны волноваться о запутывании Вашего SQL.

0
ответ дан 5 December 2019 в 04:58
поделиться

Если Вы действительно волнуетесь по поводу кого-то входящего в DB и видящий источник для процедуры, то как S. Lott сказал, можно портировать процедуру на C#. Я рекомендовал бы LINQ.

Однако сама база данных должна, вероятно, быть защищена от людей, получающих доступ к коду для процедур, которые не должны быть. Можно ограничить пользователя или права группы только иметь Доступ на выполнение к proc в случае необходимости.

0
ответ дан 5 December 2019 в 04:58
поделиться

Вы могли использовать пункт ШИФРОВАНИЯ при создании хранимой процедуры.

Это полагалось бы на не отъезд источника SQL на клиентской машине все же.

Посмотрите здесь для большего количества информации:

http://msdn.microsoft.com/en-us/library/ms187926 (SQL.90) .aspx

1
ответ дан 5 December 2019 в 04:58
поделиться

Легко обратимый, если Вы знаете, но пугающий к большинству людей, вводящих по абсолютному адресу вокруг кода. шестнадцатеричное число кодирует Вас sproc логика и затем выполняется с ДОЛЖНОСТНЫМ ЛИЦОМ (@hexEncodedString).
см. это сообщение.

2
ответ дан 5 December 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: