Allow cross-site requests of payment requests

Allow cross-site requests of payment requests
2014-05-12 10:28 ` Mike Hearn
  
From: Andy Alness @ 2014-05-12  1:05 UTC (permalink / raw)
  To: bitcoin-development

[-- Attachment #1: Type: text/plain, Size: 565 bytes --]

Would it be a terrible idea to amend BIP 70 to suggest implementors include
a "Access-Control-Allow-Origin: *" response header for their payment
request responses? I don't think this opens up any useful attack vectors.

I ask because this would make it practical for pure HTML5 web wallets to
use the payment protocol entirely in-browser. Without this I think it would
be necessary for the server hosting the wallet's HTML to fetch payment
requests on the browser's behalf. This is somewhat inelegant and has
security/resource implications for the back-end.

-Andy

[-- Attachment #2: Type: text/html, Size: 687 bytes --]

 permalink raw reply	[|nested]
2014-05-12  1:05 [Bitcoin-development] Allow cross-site requests of payment requests Andy Alness

  2014-05-12 17:21   ` Andy Alness
  
From: Mike Hearn @ 2014-05-12 10:28 UTC (permalink / raw)
  To: Andy Alness;  Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 746 bytes --]

>
> Would it be a terrible idea to amend BIP 70 to suggest implementors
> include a "Access-Control-Allow-Origin: *" response header for their
> payment request responses? I don't think this opens up any useful attack
> vectors.
>

It sounds OK to me, although we should all sleep on it for a bit. The
reason this header exists is exactly because mobile code fetching random
web resources can result in surprising security holes.

For this to be useful, someone would have to actually want to fully
implement the payment protocol (with its own root cert store, ASN.1
parsing, RSA etc) in browser-sandboxed Javascript rather than just
providing a real app for people to download.

Is that really going to be popular, though? I think it's unclear.

[-- Attachment #2: Type: text/html, Size: 1052 bytes --]

 permalink raw reply	[|nested]
2014-05-12 10:28 ` Mike Hearn

  
From: Andy Alness @ 2014-05-12 17:21 UTC ( / )
  To: Mike Hearn;  Bitcoin Dev



>
> It sounds OK to me, although we should all sleep on it for a bit. The
> reason this header exists is exactly because mobile code fetching random
> web resources can result in surprising security holes.
>

That's fair. From the server perspective, I'd argue that payment requests /
payments already need to be publicly accessible endpoints. Current
practical use requires support for cross-app/cross-device requests for
them. It seems like a reasonable logical extension to explicitly allow for
them to be accessed cross-site as well.

For this to be useful, someone would have to actually want to fully
> implement the payment protocol (with its own root cert store, ASN.1
> parsing, RSA etc) in browser-sandboxed Javascript rather than just
> providing a real app for people to download.
>

I think there is still value in fetching the payment request cross-site
even if the request payload is validated by a 3rd party using a more
conventional TLS/crypto suite. Exposing x.509/RSA/ASN.1/chain verification
functionality strikes me as a useful thing browsers could easily offer but
that's another discussion entirely but sure it could be done all in JS. In
certain environments downloading a "real app" isn't possible/practical.


> Is that really going to be popular, though? I think it's unclear.
>

It certainly won't be if there is no ability :)

-Andy