2011-10-01 5 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 범주에 등록해야합니다. 이렇게하면로드 할 각 URL에 대해 구성 요소의 shouldLoad() 메소드가 호출되도록합니다. Ci.nsIContentPolicy.REJECT_REQUEST을 반환하여로드를 차단할 수 있습니다.