-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Should/could isSecurePaymentConfirmationAvailable return an enum rather than a boolean? #284
Comments
Using the current Chrome implementation as a guide, when isSecurePaymentConfirmationAvailable is called, we check:
|
So if we were to sketch out a set of enums (bikeshedding needed):
Where they map to (in the above):
Would these present a fingerprinting risk? Let's examine:
If a user has flipped no flags, nothing is leaked on Chrome today, as it's equivalent to an OS check (which can be done silently via user agent). However, for users that have flipped flags, and for another user agent, it might technically leak something to allow this silently. One can check for it today by calling
But this isn't silent, because if SPC is available then you show something at this point. However, given all the other states are already silently detectable and that
TL;DR - I think we should be fine to do this set of enums, modulo a minor concern on the |
cc @rsolomakhin @pejic - I would appreciate your eyes on the above, to see if you agree/disagree with me on this being privacy-safe (or reasonably so :)). |
Thank you for writing this up, @stephenmcgruer! I think that this is reasonably privacy preserving. If @pejic is in agreement, then we may want to run this Chrome's Privacy Working Group. |
Thanks @stephenmcgruer. I think this sufficiently privacy preserving. None-the-less would user agents be free to choose to return 'unavailable-unknown-reason' if they decided that specific error codes should not be returned? Will clients that check only for 'available' be future proof? (I.e. updates the the standard won't introduce another available code.) |
Probably... I'm a little undecided there between "optional user agent behavior allows them to protect against privacy concerns" and "optional user agent behavior causes inconsistent and hard to understand behavior across implementations" :). But since its only for 'non-available' cases, maybe it's fine.
Yes; technically we should always consider backwards compatibility in any future update of a specification (and adding another form of 'available' would be immediately non-backwards compatible, I would argue), but we can also mention that explicitly in spec text. |
Currently, isSecurePaymentConfirmationAvailable returns a
Promise<boolean>
, indicating "if the Secure Payment Confirmation feature is available, or false otherwise".We have been recently implementing this feature in Chrome, and during implementation found that it may be useful to know more than just
true
orfalse
, but also some details on why SPC isn't available. For us during implementation this would have helped us debug code bugs, but for web developers we could imagine being able to understand + explain to users why SPC isn't available to them on the current device, or even just to record statistics across their users.This might also help address reasonable concerns that were raised on the issue relating to being clearer in the spec as to how this API should operate.
At the same time, we should be aware of potential privacy risks here, so will need to evaluate the potential for fingerprinting.
The text was updated successfully, but these errors were encountered: