Функциональные возможности защиты от повышения уровня зоны IE в BHO - PullRequest
0 голосов
/ 12 октября 2018

Я разрабатываю объект Browser Helper Object (BHO) для Internet Explorer, написанный на C #.Я использую событие BeforeNavigate, чтобы получить вызываемый URL и сохранить его в локальной переменной.Для каждой вкладки создается новый экземпляр BHO.Это означает, что каждая вкладка имеет свой собственный BHO, который, в свою очередь, имеет свои локальные переменные.Я проверил это, отобразив MessageBox с предыдущим вызванным URL-адресом (значением локальной переменной) перед тем, как он будет перезаписан новым URL-адресом.

string myUrl = "";

void BeforeNavigate( string URL, ... )
{
    System.Windows.Forms.MessageBox.Show( myUrl );
    myUrl = URL.ToString();
}

Но в некоторых случаях локальная переменная пуста, хотяURL был вызван раньше.Я исследовал настройки IE и выяснил, что это вызвано защитой IE от повышения уровня зоны.Для зон local intranet и trusted sites защищенный режим отключен, в то время как он включен для зон internet и restricted sites.

Например, когда вызывается intranet.com и затем internet.com вна той же вкладке я ожидаю, что MessageBox отображает intranet.com при вызове internet.com.Но вместо этого отображается пустая строка.Я предполагаю, что вызов internet.com активирует защищенный режим для этой вкладки, которая порождает новый экземпляр BHO.MessageBox теперь будет отображать значение переменной нового экземпляра BHO.Значение переменной старого BHO теряется.

Если защищенный режим включен для зон local intranet и trusted sites, BHO ведет себя правильно.Я предполагаю, что защищенный режим отключен в этих зонах по причинам совместимости.В интрасети могут существовать сайты, которые не работают в защищенном режиме.Таким образом, я ищу решение, которое работает с защищенным режимом, отключенным для этих зон.

Поскольку IE управляет загрузкой BHO, я сомневаюсь, что эту проблему можно решить из BHO.

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

Можно ли сохранить значение переменной с отключенным защищенным режимом для зон local intranet и trusted sites?

Любая помощьбудет оценено, спасибо!

1 Ответ

0 голосов
/ 16 октября 2018

Я нашел следующую ссылку: http://jimevansmusic.blogspot.com/2012/08/youre-doing-it-wrong-protected-mode-and.html

Там сказано:

Когда вы входите в защищенный режим или выходите из него, скажем, путем перехода с внутреннего веб-сайта интрасетинапример, в Интернете IE должен создать новый процесс, потому что он не может изменить уровень обязательного контроля целостности существующего процесса.Более того, в версиях IE после 7 не всегда очевидно, что граница защищенного режима была пересечена, поскольку IE пытается представить лучший пользовательский опыт, плавно объединяя окно браузера нового процесса с уже открытым окном браузера.Это переключение процесса под прикрытием также означает, что любые ссылки, указывающие на COM-объекты IE до пересечения границы в защищенном режиме, остаются указанными на объекты, которые больше не используются IE после пересечения границы.

Исходя из этого, мое предположение кажется правильным.BHO, который является COM-объектом IE, больше не используется, и поэтому его значение теряется.Единственное решение, которое остается, - включить или отключить защищенный режим для всех зон.

...