ограничить доступ к сети xulrunner - PullRequest
0 голосов
/ 01 октября 2011


У меня есть приложение xulrunner, которое использует компонент браузера для отображения содержимого HTML.Из соображений безопасности я хотел бы ограничить этот браузер возможностью доступа только к определенной маске URL.
Я хотел бы ограничить любую сеть только интранетом, что-то вроде "* .company.com".Но не только навигация по страницам, XHR, CSS, скрипты и все сети.

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

1 Ответ

2 голосов
/ 03 октября 2011

Самый простой способ сделать это - через файл автоконфигурации прокси (при условии, что вашему приложению на самом деле не нужно использовать прокси). Таким образом, вы должны установить network.proxy.type preference на 2 (использовать файл PAC) и network.proxy.autoconfig_url на chrome://.../proxy.js. proxy.js что-то вроде:

function FindProxyForURL(url, host)
{
    if (shExpMatch(host, "*.company.com"))
    {
        return "DIRECT";
    }
    return "SOCKS localhost:19191";
}

Таким образом, любые запросы к *.company.com не будут использовать прокси, тогда как запросы к другим хостам будут направлены на порт localhost, который, как мы надеемся, закрыт - поэтому эти запросы не будут выполнены успешно. Это, конечно, хак, но он достаточно прост и хорошо работает в большинстве сценариев.

Правильный (но более сложный) способ сделать это - использовать политики содержимого . Вам необходимо внедрить nsIContentPolicy в компонент XPCOM и зарегистрировать этот компонент в категории content-policy. Это обеспечит вызов метода shouldLoad() вашего компонента для каждого загружаемого URL - вы можете вернуть Ci.nsIContentPolicy.REJECT_REQUEST, чтобы заблокировать загрузку.

...