2011-10-01 88 views
0


我有一個使用瀏覽器組件顯示HTML內容的xulrunner應用程序。出於安全原因,我想限制該瀏覽器只能訪問某個URL掩碼。
我想限制任何網絡只能連接到內部網,比如「* .company.com」。但不僅是頁面導航,XHR,CSS,腳本和所有的網絡化。

有沒有人知道如何實現這個?我可以使用它的任何XPCOM組件?限制xulrunner網絡訪問

回答

2

最簡單的方法是通過proxy auto-configuration file(假設您的應用程序實際上並不需要使用代理)。所以你會設置network.proxy.type優先級爲2(使用PAC文件)和network.proxy.autoconfig_urlchrome://.../proxy.js。隨着proxy.js是沿着線的東西:

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

所以要*.company.com任何請求將不會使用代理,而到其他主機的請求將被定向到一個本地主機端口被封閉的希望 - 所以這些請求將不會成功。這當然是一種黑客攻擊,但它足夠簡單並且在大多數情況下運行良好。

這樣做的適當(但更復雜)的方式將使用content policies。您需要在XPCOM組件中實現nsIContentPolicy,並在content-policy類別中註冊該組件。這將確保將調用組件的shouldLoad()方法以加載每個URL - 您可以返回Ci.nsIContentPolicy.REJECT_REQUEST來阻止加載。