|
|
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
Всем привет! Сервер асе 12.52 Намедни услышал разговор двух ораклистов, о том что на стороне кастомера есть шибко умные люди которые непрочь полазить по пакетам и поизучать код процедур, а потом давать "умные" советы. И мол, ещё раз такая фигня будет, в следущей поставке зашифруем пакеты. Вниманеи вопрос :) А можено-ли сей сабж провернуть на сайбезе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 04:06 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
Костя П.О.Всем привет! Сервер асе 12.52 Намедни услышал разговор двух ораклистов, о том что на стороне кастомера есть шибко умные люди которые непрочь полазить по пакетам и поизучать код процедур, а потом давать "умные" советы. И мол, ещё раз такая фигня будет, в следущей поставке зашифруем пакеты. Вниманеи вопрос :) А можено-ли сей сабж провернуть на сайбезе? sp_hidetext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 10:45 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
На самом деле не все так однозначно хорошо. В некоторых местах Sybase сам не рекомендует использовать sp_hidetext. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 00:46 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
MasterZivНа самом деле не все так однозначно хорошо. В некоторых местах Sybase сам не рекомендует использовать sp_hidetext. Можно попросить Вас в двух словах очертить круг "нежелательного" использования процедуры sp_hidetext ? В описании процедуры в доках присутствует единственное предупреждение - о невозможности реверсивности данной операции. Заранее спасибо за ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 10:42 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
Я не помню точных мест, но где-то периодически такое встречалось. Можете воспринимать это как недостоверные слухи или сказки. Что-то там было типа для процессов upgrade-а на верхние версии, применения EBF , что-то в этом виде. Короче для всех случаев, когда нужно будет перекомпилировать процедуру, а это сейчас происходит чаще и на сколько я понимаю иногда в автоматическом режиме. Вот например, возмем такую процедуру : Код: plaintext 1. 2. 3. 4. 5. 6. Если залить это дело на сервер, такая процедура превратится (в современном ASE) в Код: plaintext 1. 2. 3. 4. 5. 6. Это появилось кажется с 12.0. Это ASE делает для того, чтобы если ему понадобится ПЕРЕКОМПИЛИРОВАТЬ процедуру, то в запросе не выводилось бы новых полей, которые могут добавится в таблицу во время с момента создания процедуры до момента перекомпиляции. (В документации сказано, что до пересоздания процедуры новые поля не должны появляться). Т.е. с этого времени, когда эта фича появилась, ASE может по своему усмотрению перекомпилировать (т.е. пересоздавать) из ихсходников процедуры. Но если они похайжены -- вот тут вопрос, может ли ASE это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 18:59 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
MasterZiv Короче для всех случаев, когда нужно будет перекомпилировать процедуру, а это сейчас происходит чаще и на сколько я понимаю иногда в автоматическом режиме. .... Т.е. с этого времени, когда эта фича появилась, ASE может по своему усмотрению перекомпилировать (т.е. пересоздавать) из ихсходников процедуры. Но если они похайжены -- вот тут вопрос, может ли ASE это сделать. Да ну !!!! Интересно... что -то я наверное пропустил. Вот если еще еще в доке покажете место, где сказано, что ASE сам по своему усмотрению автоматически пересоздает SP, то будет еще лучше.. (sp_recompile - не катит, так как юзер явно запускает такую команду а не сам ASE) То что вы описали select * from someTable where qqq = 'kkk' превращается в select someTable.field1, someTable.field2, someTable.andSoOn, someTable.fieldN from someTable where qqq = 'kkk' Это действительно так, только это называется резолюция при формировании дерева запроса в процессе компиляции SP. А касательно ограничений на которые можно попасть так могу только сказать на что сам напоролся. При кросплатформенном дампе должны все SP перекомпилироваться. Но hiden SP не перекомпилируются (понятно почему) и никакого сообщения об этом не выдается (сыроват еще кросплатпорменный дамп), а потом самое интересное наступает когда пытаешься запусить такую неперекомпилированную на новой платформе SP.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 20:19 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
moris Вот если еще еще в доке покажете место, где сказано, что ASE сам по своему усмотрению автоматически пересоздает SP, то будет еще лучше.. Знал бы конкретное место - уже бы показал. moris (sp_recompile - не катит, так как юзер явно запускает такую команду а не сам ASE) sp_recompile НЕ пересоздает и перекомпилирует процедуру, а лишь делает невалидным план ее выполнения. Это разные вещи, другой, более простой этап. А при компиляции дерево выполнения (пере)создается в sysprocedures. moris Это действительно так, только это называется резолюция при формировании дерева запроса в процессе компиляции SP. Это было так не всегда, и это было введено именно для тех целей, что я описал. moris А касательно ограничений на которые можно попасть так могу только сказать на что сам напоролся. При кросплатформенном дампе должны все SP перекомпилироваться. Ну вот например. moris Но hiden SP не перекомпилируются (понятно почему) и никакого сообщения об этом не выдается (сыроват еще кросплатпорменный дамп), а потом самое интересное наступает когда пытаешься запусить такую неперекомпилированную на новой платформе SP.... Вот и я о чем. Я бы не рекомендовал хайдить в современном ASE процедуры. Можно обойтись и просто невыдачей прав пользователям на системные таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 21:28 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
moris Вот если еще еще в доке покажете место, где сказано, что ASE сам по своему усмотрению автоматически пересоздает SP, то будет еще лучше.. MasterZiv Знал бы конкретное место - уже бы показал. Вы очень сильно ошибаетесь -- ASE сам по своему усмотрению автоматически никогда не перекомпилирует SP. moris (sp_recompile - не катит, так как юзер явно запускает такую команду а не сам ASE) MasterZiv sp_recompile НЕ пересоздает и перекомпилирует процедуру, а лишь делает невалидным план ее выполнения. Это разные вещи, другой, более простой этап. А при компиляции дерево выполнения (пере)создается в sysprocedures. И здесь не правы, sp_recompile - как раз перекомпилирует все SP в которых участвует таблица для которой sp_recompile - выполняется из доки sp_recompile - Causes each stored procedure and trigger that uses the named table to be recompiled the next time it runs. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 10:51 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
moris из доки sp_recompile - Causes each stored procedure and trigger that uses the named table to be recompiled the next time it runs. позволю себе влезть немного: не перекомпилит, а помечает для перекомпиляции при первом же её запуске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 12:45 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
komrad moris из доки sp_recompile - Causes each stored procedure and trigger that uses the named table to be recompiled the next time it runs. позволю себе влезть немного: не перекомпилит, а помечает для перекомпиляции при первом же её запуске. Да, согласен конечно, но акцент же остается прежний -- следствием sp_recompile является перекомпиляция SP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 13:27 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
moris komrad moris из доки sp_recompile - Causes each stored procedure and trigger that uses the named table to be recompiled the next time it runs. позволю себе влезть немного: не перекомпилит, а помечает для перекомпиляции при первом же её запуске. Да, согласен конечно, но акцент же остается прежний -- следствием sp_recompile является перекомпиляция SP согласен :) причем в качестве параметра для sp_recompile требуется id объекта, а объектом выступает таблица , а не конкретная проца ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 13:44 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
morissp_recompile - Causes each stored procedure and trigger that uses the named table to be recompiled the next time it runs. Это слова из документации, для "лохов" грубо говоря. Верны они в первом приближении. Да и путаница в терминах все время в документации, например, sp_recompile к компиляции никакого отношения не имеет. По сути с исполняемыми объектами ASE делает следующее: Компиляция. Производится при создании соотв. объекта ИЛИ В ДРУГИХ СЛУЧАЯХ (об этом и речь, когда еще это может случаться). Строится структура выполняемого объекта во внутреннем представлении. Разрешаются имена объектов в их идентификаторы.Результат сохраняется в sysprocedures : sysprocedures Qualifier (all databases) sysprocedures contains entries for each view, default, rule, trigger, procedure, declarative default, and check constraint. The plan or sequence tree for each object is stored in binary form. If the sequence tree does not fit into one entry, it is broken into more than one row. The sequence column identifies the sub-rows. Построение плана запроса. Производится при первом выполнении объекта, делает это оптимизатор. Строятся планы запросов в терминах оптимизатора, с конкретно используемыми индексами и способами доступа, с порядками выполнения и т.п. (то, что выводится по set showplan on). Результат сохраняется в процедурном кэше , который естественно в памяти. Также может сохраняться в виде Abstract query plan в sysplans. Подгонка плана запроса. Производится при каждом выполнении объекта, делает это обработчик запросов. (не очень сейчас важно, что это) То, что делает sp_recompile, или выполнение процедуры с опцией WITH RECOMPILE - это относится ко второму пункту, а именно - соответствующий элемент в процедурном кэше помечается как невалидный, что приводит к тому, что в следующий раз, когда объект будет выполняться, для него выполнятся все шаги, начиная со второго (а не только третий). А то, о чем речь идет в топике - это пункт первый, и это никак не связано с sp_recompile. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 15:40 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
MasterZiv morissp_recompile - Causes each stored procedure and trigger that uses the named table to be recompiled the next time it runs. Это слова из документации, для "лохов" грубо говоря. Верны они в первом приближении. Да и путаница в терминах все время в документации, например, sp_recompile к компиляции никакого отношения не имеет. Ерунда. На самом деле документация говорит правильно. Просто надо различать понятия и понимать когда происходит резолюция, а когда компиляция http://sybase.com/detail?id=1323 Storing and Executing Procedures When you create a stored procedure, the server stores the text of the procedure in the syscomments table of the current database. In addition, it builds and stores a normalized form of the procedure, called a query tree , in the sysprocedures table. The server uses the query tree to create a query plan which it uses to execute the procedure. Building the Query Tree: Resolution The process of building a query tree is called resolution. This process parses the SQL into a more efficient format and resolves all objects involved into their internal representations. For example, table names are resolved into their object IDs and column names are resolved into their column IDs. Building the Query Plan: Compilation The process of building a query plan is called compilation. Adaptive Server builds a query plan on the first execution of a stored procedure. When the procedure executes, Adaptive Server reads the corresponding query tree from the sysprocedures table and loads it into the procedure cache. The server then creates a query plan and places it in the procedure cache. The query plan is the optimized data access path that Adaptive Server uses to execute the procedure. Т.е. компиляция -это и есть составления плана запроса, а не формирование дерева запроса. В этом же документе описанно когда происходит ре-компиляция и когда ре- резолюция . И какое отношение имеет sp_recompile к ре-компиляции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 17:04 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
Да по мне так пофигу, хоть как что называй, можно хоть "creational process 1" & "creational process 2". Главное что sp_recompile к теме разговора не имеет отношения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2006, 12:40 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
Подводя итог о нежелательном использовании sp_hidetext можно внимательно еще раз прочитать "документацию для лохов". sp_hidetext - не удаляет исходный текст, а только его закодирует. Т.е. даже если и нужна пере-резолюция или пере-компилирование, ASE будет использовать закодированный sourse text. Do not delete the definition statements from the text column of syscomments. These statements are required for the Adaptive Server upgrade process. To encrypt a definition statement, execute the system procedure sp_hidetext Единественный подводный камень получается при кроссплатформенном дампе, т.к. методы кодирования зависят от OS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2006, 20:43 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
При установке/передаче sps обычным образом (через SQL script, a не dump/load) вызов sp_hidetext можно обойти, например заменив текст её на return 0 (сам так делал, кажется при установке SQL Builder by CAST software кoторый гонит тексты sps из каких-тo DLL, а в конце вызывает sp_hidetext), а иметь/передать что-то типа бинарника (как Oracle) Sybase ASE не позволяет, так что спрятать текст sps вряд ли удасться, ну может как-то и эту процедуру устанавливать вначале. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2006, 00:47 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
Такой вопрос - можно ли аналогичным образом зашифровать процедуры а ASA? Похожей функции (sp_hidetext) не нашел... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2008, 15:25 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
Гость № 555Такой вопрос - можно ли аналогичным образом зашифровать процедуры а ASA? Похожей функции (sp_hidetext) не нашел...Плохо ищешь. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2008, 17:44 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2008, 19:06 |
|
||
|
Можно-ли "зашифровать" процедуры?
|
|||
|---|---|---|---|
|
#18+
а я вот так делаю: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2008, 21:38 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=33832007&tid=2011600]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
276ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 200ms |
| total: | 585ms |

| 0 / 0 |
