Имя: Пароль:
1C
 
Замена/Перехват SQL запросов от 1с 8
0 pochemu
 
07.02.16
20:56
Мне нужно перехватывать и на лету заменять запросы, который исходят от сервера 1с к MS SQL, для SQL уже существует решение: Книга знаний: Множественный отбор в журналах и справочниках 7.7 заменой запросов SQL и http://catalog.mista.ru/public/83504/

на delphi пытаюсь колдовать с проектом - пока ничего не выходит. Сама vk_hook.dll подключается в 1с, но не происходит события перехвата SQLPrepere из ODBC32.dll

Кто-нибудь уже занимался подобными вопросами?
8 pochemu
 
07.02.16
21:16
Нужно romix'a сюда, на консультацию.
9 бомболюк
 
07.02.16
21:18
думается мне что сервер у тя 64 бита, а hook.dll скорее всего 32, так что не полетит. Да и когда 8ка писалась ОДБС было уже не модно.
10 shuhard
 
07.02.16
21:31
(3)[через ODBC32.dll ведь идут запросы?]
нет конечно
8.Х трехзвенка и работает с сиквелом напрямую через нативный клиент
11 Музон Хиггса
 
07.02.16
21:50
(0) Скользкий путь.
12 VladZ
 
08.02.16
05:35
(0) Для каких целей?
Не вижу задач, для которых бы это было нужно.
13 pochemu
 
08.02.16
06:25
(12) Есть задачи, причём очень важные и интересные.
(10) Но через dll-ки я так понимаю, всё-равно запросы должны бежать...
http://s015.radikal.ru/i330/1602/09/c763800eb960.png

или http://rsdn.ru/forum/dotnet/3075828.flat

Всё-равно через dll-ки какие-нибудь должны проходить запросы я так понимаю. А если так, то можно перехватывать.
Или вообще никаких шансов? "8.Х трехзвенка" - где про это можно почитать?
14 los_hooliganos
 
08.02.16
06:28
(13) Давай пример задачи.

Насчет перехвата, перепиши хранимые процедуры от 1С. Насколько я знаю прямые запросы 1С не шлет.
15 VladZ
 
08.02.16
06:28
(13) "Есть задачи, причём очень важные и интересные." - фирма 1С против таких "важных и интересных" задач.
16 VladZ
 
08.02.16
06:29
И пример задачи хотелось бы увидеть.
17 pochemu
 
08.02.16
06:38
(14) (16) к примеру нужно перенаправить все запросы 1с, которые к таблице dbo._AccumRg18411 на таблицу dbo._MyTable тобишь на лету переименовать эту таблицу
18 Ёпрст
 
08.02.16
06:40
(17) И ? В чем проблема ? Повесть триггер на табличку в самом скуле, пиши че надо в MyTable . Для этого ковырять dll не надо
19 rphosts
 
08.02.16
06:41
(17) вы налоговую наёпывать собираетесь?
20 pochemu
 
08.02.16
06:46
(18) Может быть пойдёт, если триггер вместе с бекапом самой базы не копируется. Не работал еще с такими вещами..
(19) Не
21 pochemu
 
08.02.16
06:47
(18) но я так понимаю, что при восстановлении бекапа триггер тоже восстановится..
22 rphosts
 
08.02.16
06:50
(20) имхается у вас всё с ног на голову... можете внятно сформулировать задачу?
23 pochemu
 
08.02.16
06:53
(22) нужно чтобы база sql не фурычила на другом компе, если просто скопипастить её бекап
24 pochemu
 
08.02.16
06:53
(22) Это лишь одна из задач
25 ЧеловекДуши
 
08.02.16
06:55
(23) >>> чтобы база sql не фурычила на другом компе

Для этого есть другие методы определения Тестовой БД :)
26 ЧеловекДуши
 
08.02.16
06:56
+ Обычно народ привязывается к Пути БД, и если путь не соответствует константе, то БД копия и далее делаешь все с этим :)
27 ЧеловекДуши
 
08.02.16
06:56
+SQL сервера не каждый день переименовываются ;)
28 pochemu
 
08.02.16
06:57
(25) Мне не нужны 1сные методы, они легко ломаются.
29 ЧеловекДуши
 
08.02.16
06:58
(17) Лучше уж писать не в "Моя таблица". А в "Моя БД" + "С моими таблицами" :)
(21) Как бекап настроишь, то и восстановит :)
30 ЧеловекДуши
 
08.02.16
06:59
(28) Не заметил. У 1С 7.7 "легко", когда "сломали". А вот с 1С 8.ххх у тебя проблема :)
31 ЧеловекДуши
 
08.02.16
07:00
(28) >>> они легко ломаются.

Что значит Ломаются? Ты случаем не пытаешься шифровать методы на лету, через "Пятую Точку"? :)
32 pochemu
 
08.02.16
07:00
(30) Ты про что? Я про то, что если ты имеешь ввиду на 1С номе коде в самой конфе прописать проверку запуска... Это не вариант.
33 ЧеловекДуши
 
08.02.16
07:01
+ При "правильном" подходе к безопасности, Все ломается :)
34 ЧеловекДуши
 
08.02.16
07:01
(32) Я про то, что Писать под средством АДО :)
35 ЧеловекДуши
 
08.02.16
07:01
Коль так хочется видеть копии Данных, где либо :)
36 Записьдампа
 
08.02.16
07:09
(28) Какая восхитительная незамутненнность.
ЗагрузитьВнешнююКомпоненту - уже 1сный метод
37 spock
 
08.02.16
07:13
Интересная тема, жалко теперь у меня приоритеты другие.
38 pochemu
 
08.02.16
07:15
(36) Который вызывает не 1Сный и без этой dll-ки будут очень долго танцевать, а dll - ку я какую угодно могу сделать. И да, её можно вообще не вызывать из 1С. Это я для примера писал.
39 Записьдампа
 
08.02.16
07:17
(23) И где здесь слово "1С"?
40 Записьдампа
 
08.02.16
07:20
(23) google://"Шифрование резервных копий в SQL Server"
41 pochemu
 
08.02.16
07:22
(40) там другие задачи еще нужно делать с отловом запросов. СПС, но это не катит вкупе со всей задачей. Мне нужно менять запросы, от этого никуда не убежать.
42 spock
 
08.02.16
07:25
(41) Сделать триггер, который использует шифрованную хранимую процедуру, где реализовать хитрую логику определения окружения.
43 pochemu
 
08.02.16
07:29
(42) Как раз про триггеры читаю. Пока я вижу, что триггер просто делает определённое действие при возникновении условия... Подмены запроса самого пока не увидел.
44 spock
 
08.02.16
07:33
(43) Перенаправить insert/update/delete в другую таблицу можно.
45 pochemu
 
08.02.16
07:36
(44) А select?
46 spock
 
08.02.16
07:37
(45) в основную таблицу совсем не хочешь писать?
47 pochemu
 
08.02.16
07:38
(46) да, нужно чтобы 1С с новой таблицей работала как со старой - читала данные, писала, удаляла и т.д.
48 pochemu
 
08.02.16
07:39
чую пессимизм с триггерами.
49 spock
 
08.02.16
07:50
думаю, нужно искать другой путь. С триггерами селекты не взлетят.
50 pochemu
 
08.02.16
07:55
(49) Было бы кайфово, если бы хоть через какие-то dll-ки летели запросы. Если нет, то в саму платформу что-ли вшиваться. Да уж..
51 shuhard
 
08.02.16
08:00
(41)[Мне нужно менять запросы, от этого никуда не убежать.]
брехня
нет такой задачи
52 pochemu
 
08.02.16
08:07
(51) Цель(одна из)
1) Надо заставить 1С полностью работать с моей таблицей вместо своей
2) При восстановлении бекапа на другом компе, 1С должна снова начать работать в штатном режиме и работать со свой 1Сной таблицей.
Какие альтернативы?
53 MaxS
 
08.02.16
08:12
пмсм где-то прописана связь метаданных 1С с физической таблицей. Вот тут и нужно копать. Нужно решить технический вопрос как подменять соответствие.
54 pochemu
 
08.02.16
08:14
(53) Это понятно, но тогда не будет выполняться 2е условие.
55 pochemu
 
08.02.16
08:16
Хм, хотя может и можно подобрать способ, чтобы при бекапе на 1Сную таблицу возвращалось значение.
56 pochemu
 
08.02.16
08:17
Нужно только отлавливать событие бекапа.
57 pochemu
 
08.02.16
08:25
Можно ли запустить триггер перед началом создания бекапа, или сам бекап как-то настроить, чтобы он запрос выполнил перед началом..
58 Ёпрст
 
08.02.16
08:29
(57) можно.
59 Записьдампа
 
08.02.16
08:29
(56) А загрузку и выгрузку в dtшник не будешь отлавливать? =)
60 Ёпрст
 
08.02.16
08:29
в план втыкаешь произвольный запрос sql перед выполнением и привет.
61 pochemu
 
08.02.16
08:31
(59) Да, проблема.
62 pochemu
 
08.02.16
08:32
Как-то нужно заблочить выгрузку в DT что-ли, фиг знает.
63 pochemu
 
08.02.16
08:34
(60) По расписанию имеешь ввиду? А если бекап сделают не в назначенное время..
64 Записьдампа
 
08.02.16
08:46
(62) И заодно подумай, как весело все развалится при реструктуризации, например при добавлении реквизита...
65 ЧеловекДуши
 
08.02.16
08:49
(62) Отмени у всех Администраторский права, и все :)
66 Ma3eIIa
 
08.02.16
08:50
(0) вообщем делаешь свой модуль. делаешь поставку модуль вырезаешь. туда добавляешь свой код по работе. то есть везде где работает с той таблицей где нужно заменить ее, код переносишь туда и все :)
67 ЧеловекДуши
 
08.02.16
08:50
Программер - тот, для кого в наступании на грабли важнее всего результат. Устав наступать на чужие грабли, изготавливает свои собственные.
68 Ёпрст
 
08.02.16
08:51
(63) при чем тут расписание ?
69 ЧеловекДуши
 
08.02.16
08:51
(66) Да все не то и не так. ТС хочет минимум движений, максимум результата :)
70 Ma3eIIa
 
08.02.16
08:53
(69) так не бывает. не взлетит как он хочет. я думаю там на самом деле больше мороки.
71 zenik
 
08.02.16
08:54
(52) В бекапе будет твоя таблица и данные в ней будут... Ее просто переименуют и база будет вся
72 pochemu
 
08.02.16
08:56
(71) Да, но про это еще догадаться надо.
73 Ma3eIIa
 
08.02.16
08:58
(72) Я тебе скажу так. если кому то надо будет разобраться. или дадут за это вознаграждение. это сделают. и найдут махинации. А если это органы, то если заподозрят. то найдут.
Хочешь срыть черное ? :)
74 Lama12
 
08.02.16
09:00
(52) Чувствую, очередная попытка решить вопросы информационной безопасности чисто техническими методами. Не взлетит.
Самое просто, из технических обходов, взять выгрузку в dt.
Не технические, будут проще в реализации.
75 pochemu
 
08.02.16
09:00
(73) Естественно, вопрос взлома - это всегда время. Большие ничего.
Ничего черного)
76 zenik
 
08.02.16
09:00
Как по мне задача сводится к решению - не дать унести бекапы. Это вполне решаемо.
77 Ma3eIIa
 
08.02.16
09:02
Еще раз если нужно что бы не работало. нужно скрыть функционал. который жизненно важный, для этого вырезаешь модуль. в макет можно положить двоичные данные, туда добавляеш снимок конфигурации железа. при старте системе проверяешь. ну и добавить туда модуля или же процедуры и функции с типового механизма. меняешь вызов где они используют. но и это можно обойти
78 pochemu
 
08.02.16
09:02
(76) Бекапы надо дать, но они не будут фурычить как надо.
79 pochemu
 
08.02.16
09:02
(77) Типовую конфу просто возвращаешь к конфе поставщика - вот и всё.
80 pochemu
 
08.02.16
09:03
(77) так защищаться может рарус к примеру (так и сделал). А мне нужно любую конфу защитить таким образом..
81 Ma3eIIa
 
08.02.16
09:04
(80) я думал твой функционал там есть и ты не хочешь его просто так давать. а ты про типовое. то не взлетит нечего из этого
82 pochemu
 
08.02.16
09:05
(74) Ну по сути - да. Вот с 7кой эта тема сработала бы, поскольку уже есть механизм замены запросов.
83 Ma3eIIa
 
08.02.16
09:06
(82) это 8. а не 7. что можно было в 7, тут Низя.
84 pochemu
 
08.02.16
09:08
(83) Главное, что знаю точно - возможно и с 1С8, вопрос во времени затраченном на это дело. Крайняк - патч платформы или самого sql-a, разработка этого патча. Но это попа..
85 ЧеловекДуши
 
08.02.16
09:10
(76) Как показывает реалити. Уровень менеджера сводится только к отчету. и печатным формам.

Бекапы может унести только Администратор и тому подобный персонал. Тут только одно. Не хочешь что бы унесли, работай сам или нанимай проверенных людей :)
86 ЧеловекДуши
 
08.02.16
09:11
+(85) Так что Пользователь унесет только уже расшифрованную информацию и в печатных носителях. Или ексельке :)
87 ЧеловекДуши
 
08.02.16
09:12
+ вся идея в (0) пустой звук и запутать только себя и контору, когда онный от туда уволится :)
88 Ma3eIIa
 
08.02.16
09:13
Проще 1с в облако. им доступ оттуда и все
89 Shamandafil
 
08.02.16
09:42
(0) Как уже говорили 8 трёхзвенка, а значит на СКЛ запросы уходят в первую очередь из процесса rphost (кроме внешних источников данных). rphost может быть 32 и 64 битным значит компоненты должны быть разными. На сервере работают только нативные компоненты, а у romixа компонента СОМ.
Так что первым делом надо промониторить какие dll и функции из них вызывает рабочий процесс, и только потом пытаться их перехватить.
Надо понимать, что технология сплайсинга использованная в компоненте (могу и ошибаться) нормально работает в однопоточном приложении (клиента), но может вызывать проблемы при обращении из разных потоков (в процессе сервера).

И в заключение, способ решения задачи выглядит каким-то глупым.
90 spock
 
08.02.16
09:58
(84) Нужно бесплатно или есть бюджет под эту задачу?
91 Drac0
 
08.02.16
10:44
(0) Дай угадаю: директор хочет наипать аудитора от собственника? :-)

Если подменять данные, то одной таблицей не отделаешься.
92 pochemu
 
08.02.16
11:16
(89) Да, этим путём и придётся похоже идти. СПС.
(90) Конечно всё ради освоения бюджета)
93 pochemu
 
08.02.16
11:18
(91) Нет)
94 МуМу
 
08.02.16
12:01
Да уж, удачи в этом непростом деле. Странная постановка задача и странный метод решения. Но если очень нужно и бюджет действительно позволяет то обращайтесь, есть уже готовые решения. Разумеется не патчинг платформы 1С , а реализованный полноценный proxy к MSSQL в котором например реализовано замена запросов на лету и т.п.(есть и блок security не позволяющий закачивать больше определенной порции важных данных)
95 Записьдампа
 
08.02.16
12:11
(94) Данное предложение не является рекламой =)
96 ЧеловекДуши
 
08.02.16
12:25
(94) Если вы видите странность. То домыслы в (19) имеют быть с вероятностью 99% :)
97 pochemu
 
08.02.16
14:35
(94) а прокси у вас ловит запросы как от сервера 1С к SQL так и от клиента 1С к серверу 1С?
98 МуМу
 
09.02.16
02:28
(97)Первое! - от сервера приложения, и т.п. все что идет к СУБД - все ловит. Второе! - От ловли чего то в 1С(клиент -сервер) лучше отказаться. Это приводит к неуправляемым взаимоотношениям(вендор -подрядчик) Как разобраться? кто виноват, где чья ответственность?
Мне кажется вы идете не тем путем. Дело даже не в 1С. Мне эта тема знакома. Приведите пару логических кейсов обойти систему защиты любой СУБД? Рассчитываете на логический парсинг запросов? - А если ваш "секретный бэкап" зашит в хранимой процедуре? Хорошо, предположим вы сделали автоматический парсинг с рекурсивными ссылками(разбор шифрованных процедур или даже "динамик SQL")? Ой, да много чего сделать много можно - если ваш "захватчик" знает "природу" вашей защиты - шансов мало. В любом случае вам нужно очень плотно общаться с вендором СУБД...
99 Necessitudo
 
09.02.16
08:56
У Софтпоинта было решения для масштабирования, которое использовало технологию подмены БД. Покопайтесь в ту сторону.
100 los_hooliganos
 
09.02.16
08:59
(99) Софтпоинт написал ровно сообщение выше. Думаю копать абсолютно не нужно :))
101 kotletka
 
09.02.16
09:01
Тс колись уже, новый шифратор троян делаешь под 1с заточеный? А что заразил комп, вирус перехватывает и полгода аишет базу в др таблицу, а потом херакс и вышлите деньги .. Имхо тс в баню за попытку взлома механизмов 1с
102 los_hooliganos
 
09.02.16
09:05
(101) Зачем такой изврат? Делаем зеркалирование, отрубаем зеркало в нужный момент и БД в суспект неизлечимый.
103 los_hooliganos
 
09.02.16
09:07
Насчет масштабирования это наверное вообще нужно копать в сторону пула коннектов. Может как-то использовать зеркалирование, на каждое зеркало свой сервер 1С. А может еще что-то выдумать можно
104 Wist
 
09.02.16
09:14
(102) а бэкапы не спасут? :)
105 PiterPrg
 
09.02.16
09:20
(45) Вьюхи-же есть. Они, кстати, бывают и редактируемые...
106 los_hooliganos
 
09.02.16
11:27
(104) бекапы под пароль
107 los_hooliganos
 
09.02.16
11:27
Кстати сам мс скл поддерживает шифрование, вот только 1С с шифром работать не сможет
2 + 2 = 3.9999999999999999999999999999999...