• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Cобытие сохранения документа

  • Автор темы Duedev
  • Дата начала
D

Duedev

Можно ли отловить событие програмного сохранения документа
(CurDoc.Save(True,False))
Знаю, что на Notes C Api такое возможно.......
Есть ли варианты Отловить событие в скрипте библиотеки используя только стандартные стредства Lotus, т.е. не прибегая к написанию доп. dll
 
O

Oksana

Можно ли отловить событие програмного сохранения документа
(CurDoc.Save(True,False))
Знаю, что на Notes C Api такое возможно.......
Есть ли варианты Отловить событие в скрипте библиотеки используя только стандартные стредства Lotus, т.е. не прибегая к написанию доп. dll
Видимо, тебе надо вставить свой код в событие Querysave формы документа
 
D

Duedev

<!--QuoteBegin-Oksana+17:05:2007, 13:19 -->
<span class="vbquote">(Oksana @ 17:05:2007, 13:19 )</span><!--QuoteEBegin-->Видимо, тебе надо вставить свой код в событие Querysave формы документа
[snapback]66252" rel="nofollow" target="_blank[/snapback]​
[/quote]

Я говорю про сохранение документа не по форме, а скриптом.....
если например, на форме на событии postopen cтоит что-то вроде: source.document.save(True,False)
то событие querysave при этом не отработает
 
R

Ronchik

событие сие происходить только при сохранении из интерфейса.....все зависит от того что ты хочешь сделать может его и ловить то вовсе не нужно
 
K

K-Fire

<!--QuoteBegin-Duedev+17:05:2007, 10:49 -->
<span class="vbquote">(Duedev @ 17:05:2007, 10:49 )</span><!--QuoteEBegin-->Есть ли варианты Отловить событие в скрипте библиотеки используя только стандартные стредства Lotus, т.е. не прибегая к написанию доп. dll
[snapback]66246" rel="nofollow" target="_blank[/snapback]​
[/quote]

Нет, стандартных средств нет, но можно обойтись и ними, если "переопределить" метод Save. Т.е. вместо Call doc.Save() ты пишешь Call MySave(doc), а в этом MySave проводишь все проверки какие тебе нужны.
 
30.05.2006
1 345
12
BIT
0
Нет, стандартных средств нет, но можно обойтись и ними, если "переопределить" метод Save. Т.е. вместо Call doc.Save() ты пишешь Call MySave(doc), а в этом MySave проводишь все проверки какие тебе нужны.
Не..
Он хочет надстроить что-то НАД всем Лотусом. Или над одной базой.
Но в эту базу можно писать кодом запущенным в др.базе! Т.е. таки над ВСЕМ Лотусом. Штатный механизм - hook-и (dll). Не хочется (и я его понимаю).

Вариант: отлавливать все save-ы "задним числом", т.е. штатными-же агентами по обновлению. Чем плохо: НЕтранзакционно. Так Лотус по определению не транзакционен (как база)! И на real-time-ы не заточен
 
D

Duedev

<!--QuoteBegin-Constantin A Chervonenko+18:05:2007, 16:35 -->
<span class="vbquote">(Constantin A Chervonenko @ 18:05:2007, 16:35 )</span><!--QuoteEBegin-->Не..
Он хочет надстроить что-то НАД всем Лотусом. Или над одной базой.
[snapback]66384" rel="nofollow" target="_blank[/snapback]​
[/quote]

Точно! ;)......
<!--QuoteBegin-Constantin A Chervonenko+18:05:2007, 16:35 -->
<span class="vbquote">(Constantin A Chervonenko @ 18:05:2007, 16:35 )</span><!--QuoteEBegin-->Вариант: отлавливать все save-ы "задним числом", т.е. штатными-же агентами по обновлению. Чем плохо: НЕтранзакционно. Так Лотус по определению не транзакционен (как база)! И на real-time-ы не заточен
[snapback]66384" rel="nofollow" target="_blank[/snapback]​
[/quote]
К сожалению мне действительно необходим реал-тайм для диалога с пользователем...
<!--QuoteBegin-Constantin A Chervonenko+18:05:2007, 16:35 -->
<span class="vbquote">(Constantin A Chervonenko @ 18:05:2007, 16:35 )</span><!--QuoteEBegin-->Штатный механизм - hook-и (dll). Не хочется (и я его понимаю).
[snapback]66384" rel="nofollow" target="_blank[/snapback]​
[/quote]
Действительно не хочется..... учитывая то, что Linux-клиенты для Lotus, да и перспективы установки linux OC для пользователя уже не за горами.........
 
F

Fossil Code

Как всегда при возникновении проблемы, хочется уточнить, зачем это нужно, чтобы подумать, нельзя ли добиться того же результата другими средствами :) .

Потом захочется спросить, каков смысл сего мероприятия, чтобы представить себе соотношение между возможными трудозатратами и достигаемой целью :(

А потом решить, стоит ли овчинка выделки, и не пора ли идти наверх скандалить по поводу исключения из спецификации проекта данного функционала!
 
D

Duedev

<!--QuoteBegin-Fossil Code+21:05:2007, 10:44 -->
<span class="vbquote">(Fossil Code @ 21:05:2007, 10:44 )</span><!--QuoteEBegin-->зачем это нужно, чтобы подумать, нельзя ли добиться того же результата другими средствами
[snapback]66503" rel="nofollow" target="_blank[/snapback]​
[/quote]

Мне необходимо организовать механизм лицензирования для системы из несокльких БД....
Необходимо чтобы пользователю нельзя было сохранять документ, если у него нет "корректной" лицензии.... и соотв. уведомлять его об этом......
 
F

Fossil Code

Тема очень интересная. И подходов к исполнению защиты Лотусового приложения, естественно, может быть много.

А) Попытка "адекватного" ответа
Если понял верно, то постановка такова: Вы можете вставить свой код проверки лицензии в QuerySave для документа. Но есть проблема со случаями, когда это событие просто не возникает. В связи с этим вопрос по существу: почему есть готовность вписывать код в QuerySave, но нет готовности вписывать аналогичный код в те скрипты, которые могут сохранять документы? Или Вы хотите реализовать механизм "надстройки" над Лотусом, когда при разработке БД не учитываются требования защиты от копирования, а соответствующие средства потом "укладываются" на любую и всякую БД? Или Вы все-таки готовы пойти на доработку, но в возможно меньшем объеме?

Согласитесь, что это все очень разные случаи. Разработка в соотв. с требованиями системы лицензирования, т.е. вставка кода всюду, где может происходить сохранение -- вещь трудоемкая, но снимает все вопросы. Реализация на системном уровне, очевидно, потребует работы на уровне системы, например "хуков" на соотв. dll Лотуса и от того не уйти, если задача ставится именно так. Наконец, для максимальной экономии труда, IMAO, можно попробовать добиться следующим образом:

Б) Попытка "асимметричного" ответа
- Минимум трудозатрат разработчика может быть достигнут в случае, когда на событие открытия/закрытия базы () вешается код, проверяющий лицензию, выдающий сообщение пользователю и удаляющий все "незаконно" созданные документы.
- Может быть, имеет смысл отрабатывать событие открытия формы? Уж оно-то происходит всегда, когда пользователь начинает создавать документы! (Или просто смотреть) И в этот момент делать проверку лицезии, инициализацию легендарного поля SaveOptions, принудительное удаление и закрытие документа и т.п.?
 
D

Duedev

<!--QuoteBegin-Fossil Code+23:05:2007, 10:30 -->
<span class="vbquote">(Fossil Code @ 23:05:2007, 10:30 )</span><!--QuoteEBegin-->на событие открытия/закрытия базы () вешается код, проверяющий лицензию, выдающий сообщение пользователю и удаляющий все "незаконно" созданные документы.
[snapback]66794" rel="nofollow" target="_blank[/snapback]​
[/quote]

Как тогда отличить незаконно созданные документы?

-------------------
И все равно в этом случае ,проверка лицензии осуществляется с запозданием, что мешает пользователю убрать эту проверку в DatabaseScript?
 
F

Fossil Code

Как тогда отличить незаконно созданные документы?

-------------------
И все равно в этом случае ,проверка лицензии осуществляется с запозданием, что мешает пользователю убрать эту проверку в DatabaseScript?

Все документы, созданные этим пользователем, если у него нет лицензии.

Запоздание -- не беда, главное, что нормальная работа невозможна.

Ну, скрытый дизайн и отсутствие прав дизайнера.

Потом, как насчет идеи не разрешать _создание_ документов нелицензированным лицам?
 
D

Duedev

<!--QuoteBegin-Fossil Code+23:05:2007, 11:40 -->
<span class="vbquote">(Fossil Code @ 23:05:2007, 11:40 )</span><!--QuoteEBegin-->Все документы, созданные этим пользователем, если у него нет лицензии.
[snapback]66804" rel="nofollow" target="_blank[/snapback]​
[/quote]

Как выборку таких документов сделать при открытии БД? Я к тому, что если ставить в каком-то поле таких документов флаг, то никто не помешает пользователю самому программно менять этот флаг на корректный

<!--QuoteBegin-Fossil Code+23:05:2007, 11:40 -->
<span class="vbquote">(Fossil Code @ 23:05:2007, 11:40 )</span><!--QuoteEBegin-->Ну, скрытый дизайн и отсутствие прав дизайнера.
[snapback]66804" rel="nofollow" target="_blank[/snapback]​
[/quote]
Такое невозможно. Во-первых, пользователь в данном случае это другое юрид. лицо с собственным доменом и политикой безопастности...
Во вторых скрывать дизайн базы неправильно, т.к открытость кодов явл. одним из основных конкурентных преимуществ продуктов на базе Lotus.
Если скрывать только DatabaseScript, то нет никаких гарантий, что пользователь его не изменит.
 
30.05.2006
1 345
12
BIT
0
Соображения:
Послать msg юзеру в момент нарушения лицензии не всегда возможно. Вдруг doc.Save выполняется серверным агентом? Кому/что слать?
Хук в чужую систему встроить Вам, скорее всего, не позволят. Ну, разве что он - часть продукта

Предложения:
Лицензии считать "задним числом". Вы свой продукт поставляете в виде базы ЧАСТЬ кода которой защищена. Эта часть содержит, кроме прочего, агента, который сканирует базы на предмет нарушений

Ы?
 
F

Fossil Code

Как выборку таких документов сделать при открытии БД?

Есть же в свойствах документа имя создателя.

Я к тому, что если ставить в каком-то поле таких документов флаг, то никто не помешает пользователю самому программно менять этот флаг на корректный

При открытом дизайне никто и ничто не поможет по определению. Всегда можно сказать, что пользователь изменит код и прости-прощай лицензионность.

Такое невозможно. Во-первых, пользователь в данном случае это другое юрид. лицо с собственным доменом и политикой безопастности...

Программное принудительное управление АЦЛ вполне возможно, однако, имеет смысл лишь при закрытом дизайне.

Во вторых скрывать дизайн базы неправильно, т.к открытость кодов явл. одним из основных конкурентных преимуществ продуктов на базе Lotus.

TrendMicro скрывает и совсем неплохо себя чувствует. "Конкурентное преимущество Лотуса" -- звучит слишком абстрактно и не убеждает в роли аргумента". Вот если конкретный разработчик рекламирует свой конкретный продукт, говоря, что отдает его с открытым кодом -- это весомый довод!

Если скрывать только DatabaseScript, то нет никаких гарантий, что пользователь его не изменит.

Повторюсь, при открытом дизайне все и любые меры по определению будут ненадежными. Постулирование открытого дизайна сводит на нет все и вся. По-моему, неправильно загонять себя в угол подобными постановками. И, если разрешить себе закрыть дизайн, то можно будет выбирать из целого спектра решений. А если идти на открытый дизайн, то заранее смириться с существованием определенного процента организаций/пользователей, которые, покопавшись в коде обойдут, так сказать, "защиту".
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!