Hi All,

While looking at the navigator.pay API, there's one privacy concern that I had.

As the API is currently intended to use, the flow is something like
the following:

1. User visits website.
2. Website calls navigator.pay and provides a JWT-encoded request
which contains information about what is being payed for, how much
money is being payed, currency etc. The request is signed with the
developers private key (which means that it must be generated
server-side).
3. Gaia automatically sends the JWT encoded data to BlueVia. This
request includes user identifying information (except for the first
time the user uses BlueVia payments).
4. BlueVia returns a HTML page which contains UI which describes to
the user the information encoded in the JWT request. I.e. the details
of the payment.
5. The user clicks an "accept payment" button.
6. Gaia displays UI which allows the user to log in to BlueVia.
7. Once the user has logged in, BlueVia sends a server-to-server
request to the application server indicating that payment has been
received.
8. The webpage is notified that the payment went through.

My concern here is step 3. It seems like a privacy leak to me that
with no action from the user, details about something that the user is
considering buying, or that the user accidentally clicked, is sent to
BlueVia. Just because I trust BlueVia with handling my money, doesn't
mean that I'm comfortable with BlueVia knowing which websites I visit.
If I decide that I actually want to make a payment to the website
using BlueVia, then obviously I have to let BlueVia know, but until
then it doesn't seem like something that we should be telling BlueVia
about.

It seems like we can get a very similar UX experience with the same
number of clicks using a flow like:

1. User visits website.
2. Website calls navigator.pay and provides a JWT-encoded request
which contains information about what is being payed for, how much
money is being payed, currency etc. The request is signed with the
developers private key (which means that it must be generated
server-side).
3. Gaia decodes the JWT data and displays the information encoded in
the JWT request as well as a button that says "Pay with BlueVia".
4. The user clicks an "Pay with BlueVia" button.
5. Gaia displays UI which allows the user to log in to BlueVia.
6. Once the user has logged in, the JWT data is sent to BlueVia.
7. BlueVia sends a server-to-server request to the application server
indicating that payment has been received.
8. The webpage is notified that the payment went through.

Did we do a privacy review of this API? Did this come up during that review?

/ Jonas
_______________________________________________
dev-security mailing list
dev-security@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security

Reply via email to