On Wednesday, June 21, 2017 at 1:43:18 AM UTC-5, jacob.hoff...@gmail.com wrote:
> > It's been an on-going question for me, since the use case (as a software
> > developer) is quite real: if you serve a site over HTTPS and it needs to
> > communicate with a local client application then you need this (or, you
> > need to manage your own CA, and ask every person to install a
> > certificate on all their devices)
> 
> I think it's both safe and reasonable to talk to localhost over HTTP rather 
> than HTTPS, because any party that can intercept communications to localhost 
> presumably has nearly full control of your machine anyhow.
> 
> There's the question of mixed content blocking: If you have an HTTPS host 
> URL, can you embed or otherwise communicate with a local HTTP URL? AFAICT 
> both Chrome and Firefox will allow that: 
> https://chromium.googlesource.com/chromium/src.git/+/130ee686fa00b617bfc001ceb3bb49782da2cb4e
>  and https://bugzilla.mozilla.org/show_bug.cgi?id=903966. I haven't checked 
> other browsers. Note that you have to use "127.0.0.1" rather than 
> "localhost." See 
> https://tools.ietf.org/html/draft-west-let-localhost-be-localhost-03 for why.
> 
> So I think the answer to your underlying question is: Use HTTP on localhost 
> instead of a certificate with a publicly resolvable name and a compromised 
> private key. The latter is actually very risky because a MitM attacker can 
> change the resolution of the public name to something other than 127.0.0.1, 
> and because the private key is compromised, the attacker can also 
> successfully complete a TLS handshake with a valid certificate. So the 
> technique under discussion here actually makes web<->local communications 
> less secure, not more.
> 
> Also, as a reminder: make sure that the code operating on localhost carefully 
> restricts which web origins are allowed to talk to it, for instance by using 
> CORS with the Access-Control-Allow-Origin header: 
> https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS.

I believe the underlying issue for many of these cases pertains to initiating a 
connection to a WebSocket running on some port on 127.0.0.1 as a sub-resource 
of an external web page served up from an external public web server via https.

I believe that presently both Firefox and Chrome prevent that from working, 
rejecting a non-secure ws:/ URL as mixed content.
_______________________________________________
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy

Reply via email to