|
Замена/Перехват 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С с шифром работать не сможет
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |