[webkit-qt] Preventing net access for specific WebView

Thomas McGuire thomas.mcguire at kdab.com
Thu Mar 14 07:10:10 PDT 2013


Hi,

we're developing a Qt5/QtQtuick2 application that can embed other HTML5 
applications. These HTML5 apps are displayed in QML WebViews.

I'd like to restrict network access in some of the WebViews, while allowing 
network access in others. The only way to get network access on that device is 
via a SOCKS5 proxy running on localhost. So I see two possibility of 
restricting network access:

1) Make some WebViews use the proxy, and making other WebViews not use the 
proxy.
2) Make all WebViews use the proxy but somehow(?) disable network access in 
some of the WebViews by other means.

Right now, the only way to set a proxy at all is via the env vars http_proxy 
and https_proxy. Since there is only one web process with one QNAM, setting 
these env vars means the proxy is set globally, for all WebViews, which would 
rule out 1).

One idea I had to make 1) work is to add additional API to QQuickWebView to 
enabled the ProcessModelMultipleSecondaryProcesses, and then add more API to 
QQuickWebView to set a proxy via API rather than via env vars. That would 
enable to have one web process per WebView, and the proxy could be set per 
WebView, exactly what I needed, although with the unfortunate side effect of 
having many more processes, which on an embedded device is probably not good. 
The other thing is that I heard plans of moving the QNAM to a seperate network 
process, in which case having multiple web processes does not help anyway. 
What is the timeline for having the network process in Qt, btw?


Or maybe there is a way to make 2) work? I tried playing around with settings 
like setAllowUniversalAccessFromFileURLs(false), but that only restricts 
script loading, not all network traffic. Seems like SecurityOrigin is made to 
prevent cross-site stuff, not to prevent network traffic at all. So that 
doesn't seem to work for me. Maybe there are some other means which you know 
about?


I would appreciate any ideas how to restrict network traffic in some specific 
WebViews, but not all. Ideally I would prefer a solution where I can write an 
upstreamable patch. Well better even making this work without a patch :)

Any ideas are welcome, I am that desperate that I even considered creating URL 
scheme delegates for HTTP and HTTPS... 


Regards,
Thomas
-- 
Thomas McGuire | thomas.mcguire at kdab.com | Software Engineer
KDAB (Deutschland) GmbH&Co KG, a KDAB Group company
Tel. Germany +49-30-521325470, Sweden (HQ) +46-563-540090
KDAB - Qt Experts - Platform-independent software solutions
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3637 bytes
Desc: not available
URL: <http://lists.webkit.org/pipermail/webkit-qt/attachments/20130314/5828f296/attachment.p7s>


More information about the webkit-qt mailing list