Скрыть поле от Web поиска и шифрование

NetWood

Lotus Team
17.04.2008
565
96
BIT
174
Решаю задачу скрытия от веб поиска доков с полем, предположим SecretInfo, в котором есть индексируемый текст. Написать все возможные условия нежелательного содержимого этого поля селектом, во вьюхе Search, возможности нет. Пошел путем шифрования поля и переобновления индекса. Галочку 'Индексировать зашифрованное' не ставим. На форму добавляю поле SecretEncryptionKeys с именем шифровального ключа и пересохраняю документ. Обновляю индекс - док из поиска пропадает.

Да, это работает, НО вместе с шифрованным полем по умолчанию енкриптятся ВСЕ приаттаченные в док файлы - что меня никак не устраивает, так как вывести их не могу.

Вопросы:
1. Есть ли другой способ исключить из индекса поиска некоторые поля дока?
2. Как сделать так, чтобы аттачменты дока не шифровались ключом по умолчанию?

Notes: 7.0.4 Server: 8.5.2
 
Последнее редактирование:
На оба вопроса ответ - нет, так работает.
Но есть ходы без шифрования.

1. Если необходимо убрать из поиска только одно поле, то можно исключать его добавляя в конец запроса строку: "AND NOT [SecretInfo] contains текст поиска ". Но строка поиска ограничена по длине... Поэтому надо аккуратно.
2. Сделать для web поиска отдельную реплику базы, в которую реплицировать документы по формуле (там можно исключать отдельные поля и не реплицировать их, не проверял.)
3. Сделать фрагментацию документа: Всю скрытую информацию хранить вне основного документа, подгружать данные при открытии. Форму таких докуметов исключать из FTSearch... Ну и переделать отображение документов.
 
я бы сделала просто - ввела в это поле собственное шифрование. Понимаете? Хранить в зашифрованном виде, а способ самим придумать.
 
  • Нравится
Реакции: NetWood
от веб поиска доков с полем
вот что это такое??


по этому полю не должно быть селекта? - снимите флаг суммари

по нему нужно убрать индексацию? вынесите его в отдельную базу

научитесь корректно ставить задачу
 
в это поле собственное шифрование... Хранить в зашифрованном виде, а способ самим придумать.
да, как локальное решение это подойдет. Какой-нибудь готовый собакоспособ есть?
по нему нужно убрать индексацию? вынесите его в отдельную базу
тоже хорошо, но слишком глобально. Из-за одного поля городить базу лениво. Буду учиться ставить задачи))))) - даже могу приплатить за это.
[doublepost=1485769843,1485769461][/doublepost]
3. Сделать фрагментацию документа: Всю скрытую информацию хранить вне основного документа, Ну и переделать отображение документов.
второй вариант за отдельную базу для поля - тяжеловато и реплицировать надо будет отдельно и пр и пр. Благодарю за ответ. Вот была бы галочка на форме 'это поле не индексировать' и было бы счастье.

Кста, сокращенный вариант поискового запроса без полного contains может быть такой: [SecretInfo]co("Электрика")AND NOT лампа.
 
Последнее редактирование:
да, как локальное решение это подойдет. Какой-нибудь готовый собакоспособ есть?
Есть, но вам не подойдет - у нас шифрация дат. Придумать можно все, что угодно, тем более, с Вашим опытом. Даже символы задом наперед переставить - уже искаться не будет.
Если у вас таким образом хранятся цены, я бы подтягивала из sql в компьютед филд (или в computed value) и не хранила в документе.
PS: незнаю, чего товарищ придрался к постановке задачи, это же форум, однако. Постановка это: цели, задачи, требования и юзкейсы/юзерстори, если что.
 
я бы сделала просто - ввела в это поле собственное шифрование
зачем именно собственное?
[doublepost=1485773863,1485773508][/doublepost]
по умолчанию енкриптятся ВСЕ приаттаченные в док файлы
снимать флаг для шифрования (код для снятия со всех айтемов, кроме нужного)
 
снимать флаг для шифрования (код для снятия со всех айтемов, кроме нужного)
Там между строк написано - это ломало зашифрованных доков целиком). Только снимает енкрипт со всего дока целиком, а не с отдельного поля, в частности - с файлов. Илиянепонял?
 
практически :)
указанный выше скрипт делает шифрование только на одно поле (снимая флаг с остальных),
команды зашифровать одно поле - нет (на ЛС) пример из хэлпа:
Код:
'3.This script encrypts the Subject and Body items in a document using the Top Secret encryption key.
Dim doc As NotesDocument
Dim itemA As NotesItem
Dim itemB As NotesItem
'...set value of doc...
Set itemA = doc.GetFirstItem( "Subject" )
Set itemB = doc.GetFirstItem( "Body" )
itemA.IsEncrypted = True
itemB.IsEncrypted = True
doc.EncryptionKeys = "Top Secret"
Call doc.Encrypt
Call doc.Save( True, True )
 
указанный выше скрипт делает шифрование только на одно поле (снимая флаг с остальных)
Класс... Из 50 полей надо скрыть только одно, поэтому переберем все 50 и 49 выставим False...
В каждом документе, при сохранении... Вот честно, уж лучше отдельную базу делать...
 
Класс... Из 50 полей надо скрыть только одно, поэтому переберем все 50 и 49 выставим False...
В каждом документе, при сохранении... Вот честно, уж лучше отдельную базу делать...
в реале - не совсем так
просто флаг может стоять на др. полях (я чужого дизайна не знаю)
@NetWood сетовал на шифрование РТ, т.е. по факту - снять только с РТ
при этом - все можно сделать на QS и перебирать ничего не нужно (ну за искл. первого раза)
перенос в др. бд - это изменение архитектуры приложения для данного случая - не уверен что нужно
[doublepost=1485851998,1485851892][/doublepost]
все 50 вы не переберетё, потому как поле РТ с аттачами множественно ;)
зависит от аттача
 
Решаю задачу скрытия от веб поиска доков с полем, предположим SecretInfo, в котором есть индексируемый текст. Написать все возможные условия нежелательного содержимого этого поля селектом, во вьюхе Search, возможности нет.

Извините, что с начала.

Вы хотите скрыть (отбрасывать) из взгляда (результатов поиска) все документы с данным полем? [@IsAvailable]
(Т.о. достаточно существования такого поля для игнорирования документа в поиске (показе во view))

Не хотите показывать пользователям этот документ? [Readers\Authors]

Или пользователь может найти этот документ, но только по значениям другого поля?

Что то уж много разных вариантов тут одновременно обсуждается :) Я в совершенных непонятках.

Так уж сильно нужно вам это поле? Его смысл? Если есть смысл, то зачем прятать.
Если это некое неизвестное по количеству списковое поле, то сделайте пополняемый справочник со значениями "Параметр|index"

Может быть - нехай с ним, пусть индексируется?
 
Если у вас таким образом хранятся цены, я бы подтягивала из sql в компьютед филд (или в computed value) и не хранила в документе.
Может быть - нехай с ним, пусть индексируется?
Архитектура базы такова, что респонсы не используются. Нижние доки подчиняются верхним на основе одинаковых значений ключевых полей по аналогии с sql и прочими реляционными. Поскольку во вьюхах @DbLookup и @DbColumn не работают, я собираю в нижних доках инфу с верхних, например, по разным категориям подчинения, имена вложенных в верхние файлов, храню списком и извлекаю, когда надо, во вьюхе через @GetMember. Вот этот список и хочу скрыть, чтобы индексер его не видел и в результатах поиска не было избыточной выдачи. Проблема не страшная, но хочется конфет). Намедни попробую варианты тут изложенные и доложусь. #10 на UI не работает, к сожалению.
 
Последнее редактирование:
Т.е. computed for display, даже используя циклы, никак, да? "На лету" собирать названия аттачей не получится?
...
Надо тогда хранить имена в извращенном виде, напр., через @URLEncode //
 
Мы в соцсетях:

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