-
Notifications
You must be signed in to change notification settings - Fork 259
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
Consider allowing SharedStorage read access within Fledge bidding worklets #208
Comments
Ah, this does seem problematic. Effectively you'd be allowing cross-site data (via shared storage) to choose from an arbitrary number of ads. Which means that you could leak an arbitrary amount of cross-site data into a fenced frame, and ultimately to the landing page of the ad if the user clicks on it. This is different from Shared Storage's current output gate which allows for selection from a small number of urls (e.g., 3-5). |
I'm not sure exactly what you mean by that. I think the more general issue is that I'm not totally clear on what should be the compatibility between SharedStorage and Fledge, and what we would need exactly. Indeed this is quite a complex topic. It seems from your issue title that you suggest that in Fledge bidding worklet, it should be possible to call |
You may be right. I guess it depends on if each interest group that an origin has is analyzed in isolation or if there is state shared between them.
That is indeed what I'm proposing, but this is only okay if the number of total ads to select from is in the 3-5 range. What do you mean if only this type of call? Do you mean you'd also need to write to shared storage? |
Why is that ? From my understanding the number of ads to select from (for a given interest group) is not limited, and the only requirements are that the ad was already present in the interest group 'ads' fields, and that the ad passes the "micro targerting protection" threshold (to be displayed). I don't understand why adding new SharedStorage capabilities in the worklets would put additional requirements on Fledge.
Not sure actually :) |
If you can use shared storage to select from 1024 ads, then the selected ad represents up to log2(1024)=10 bits of information. And that's 1024 of cross-site information (e.g., sites you've visited). |
I don't really get this.
In what I wrote above we are in regular fledge worklet, so there is no specific "shared storage" limitation related to ads. It seems what you have in mind is not what I described above, but something that mixes both Fledge bidding worklet and SharedStorage |
@jkarlin Is this only a concern in the case of a click in the fenced frame? I can't see how the information would leak otherwise. If I can take a crack at explaining, @vincent-grosbois: The user goes to a.example, which creates an interest group with 1024 ads (or whatever), with URLs:
The interest group owner has relationship with 1024 other sites:
Each of these sites writes into shared storage These ads may have passed their k-anonymity checks, but that doesn't prevent a.example knowing some cross-site visits for this user specifically, and that's the issue. This is why the Shared Storage API limits the URL selection to five URLs; effectively it's a tradeoff on usability for A/B experimentation and data leakage. |
Thanks @appascoe , I got it now :) Seems like indeed allowing to use SharedStorage would change the behavior of Fledge wrt what the kind of infos the advertising website can learn.... |
Yep. So, I'm going to close this for now assuming that we don't want to introduce this significant a change to FLEDGE. Going back to WICG/shared-storage#7, which requested support for A/B testing in FLEDGE via Shared Storage, perhaps A/B testing could be done via the interest group itself? E.g., put a user in interest group 100 for the A case and 101 for the B case. Not sure if that would suffice for everyone, but that followup should likely happen in a new FLEDGE issue. |
Bringing this back from the dead to ponder on some more. I still think that we want to provide read/write access to Shared Storage in FLEDGE for the use cases mentioned above plus negative filtering #319. So here is another proposal: Create a filtering function somewhere in the DSP flow (e.g., post bid on each of the IGs) that allows the top ~8 bids to be filtered (e.g., dropped if they're no good) via a worklet that can read from SharedStorage before sending the urls off to scoreAd. This puts a cap of up to 3 bits of SharedStorage data to flow into the output URL which seems acceptable. This seems useful for negative filtering, frequency capping, and lift measurement. I'm not so sure if it'd work for general a/b very well, because the a and b may not show up in the top 8. That might require filtering at the IG level before bidding. Thoughts? |
I'm not well versed in FLEDGE (apologies), but it seems like it might be advantageous (see request here WICG/shared-storage#7) to allow for reading from Shared Storage within FLEDGE worklets. This would enable a/b experiments, frequency capping, allow blocking of user unwanted ads, and more without having to explicitly support these mechanisms in FLEDGE.
The text was updated successfully, but these errors were encountered: