You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: faq/prebid-server-faq.md
+91-13Lines changed: 91 additions & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -75,20 +75,98 @@ Syncing in the AMP scenario uses the [load-cookie.html](/dev-docs/show-prebid-ad
75
75
the Prebid Universal Creative package. When placed into an AMP-iframe, this file will call /cookie-sync and initiate a sync that
76
76
creates or updates the `uids` cookie.
77
77
78
-
The most common source of requests for Prebid Server is from Prebid.js:
79
-
80
-
0) Assume that the user doesn't have any cookies for the Prebid Server domain.
81
-
1) User loads a page with Prebid.js that's going to call Prebid Server -- i.e. the pub has set up s2sConfig.
82
-
2) Immediately after seeing that s2sConfig is setup, Prebid.js calls Prebid Server's `/cookie-sync` endpoint to initiate syncing
83
-
3) Prebid Server sees there no `uids` cookie, so responds to the browser with a list of pixel syncs for bidders that need to be synced.
84
-
4) Prebid.js places all of the pixels on the page, but in the meantime, also initiates the auction.
85
-
5) Because the syncs haven't completed yet, the auction call to Prebid Server doesn't yet contain the uids cookie.
86
-
6) The first auction happens without IDs
87
-
7) At some point later, the pixels come back to Prebid Server through a /setuid redirect, setting (or updating) the `uids` cookie.
88
-
8) The second page view will have the IDs available.
89
-
90
-
There's a nuance here: the company that's hosting Prebid Server can configure it to read and utilize their exchange's
78
+
The most common source of requests for Prebid Server is from Prebid.js in a scenario where the user doesn't have any cookies for the Prebid Server domain.
79
+
1. The user loads a page with Prebid.js that's going to call Prebid Server -- i.e. the pub has set up s2sConfig.
80
+
2. Immediately after confirming that s2sConfig is setup, Prebid.js calls Prebid Server's /cookie-sync endpoint to initiate syncing
81
+
3. Prebid Server determines there is no `uids` cookie and responds to the browser with a list of pixel syncs for bidders that need to be synced.
82
+
4. Prebid.js places all of the pixels on the page and initiates the auction.
83
+
5. Because the syncs haven't completed, the auction call to Prebid Server will not contain the uids cookie.
84
+
6. The first auction occurs without IDs
85
+
7. At some point later, the pixels come back to Prebid Server through a /setuid redirect, setting (or updating) the uids cookie.
86
+
8. The second page view will have the IDs available.
87
+
88
+
89
+
90
+
{: .alert.alert-info :}
91
+
Note: the company that's hosting Prebid Server can configure it to read and utilize their exchange's
91
92
native cookie. i.e. if you're using Rubicon Project's Prebid Server, it can read their 'khaos' cookie, and if you're using
92
93
AppNexus' Prebid Server, it can read their 'uuid2' cookie. In other words, if the host company is an exchange and the user
93
94
has the exchange cookie, the host company will have an ID one page-view sooner than the other bidders. This gives a slight edge to
94
95
the hosting company in some scenarios, but it's technically unavoidable and better for both buyers and sellers to have one ID available rather than zero.
96
+
97
+
## How does Prebid Server support privay signals?
98
+
99
+
### Mobile 'Limit Ad Tracking' flag
100
+
101
+
If PBS receives 'device.lmt' flag in the OpenRTB request, it does the following anonymization:
102
+
103
+
- Mask take off the last byte of the IPv4 address and the last 2 bytes of IPv6 addresses
104
+
- Removes user.id and user.buyeruid
105
+
- Removes the request.device.ifa attribute
106
+
- Rounds the request.device.geo. {lat,lon} to two decimal places
107
+
108
+
### GDPR
109
+
110
+
Prebid Server host companies and publishers have the ability to control the enforcement
111
+
activities that take place.
112
+
113
+
The enforcement strategy changed significantly between TCF 1.1 and TCF 2.0. [TCF2](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/IAB%20Tech%20Lab%20-%20Consent%20string%20and%20vendor%20list%20formats%20v2.md) is a
114
+
more nuanced and stricter policy.
115
+
116
+
#### TCF 1.1
117
+
118
+
If Prebid Server determines that the user is in GDPR scope and doesn't consent
119
+
to *all* of the vendor's 'purposes' as declared in the Global Vendor List, it 'anonymizes'
120
+
the request to the adapters:
121
+
122
+
- Mask take off the last byte of the IPv4 address and the last 2 bytes of IPv6 addresses
123
+
- Removes user.id and user.buyeruid
124
+
- Removes the request.device.ifa attribute
125
+
- Rounds the request.device.geo. {lat,lon} to two decimal places
126
+
127
+
Full details are available [here](https://github.com/rubicon-project/prebid-server-java/blob/master/docs/developers/PrebidServerJava_GDPR_Requirements.pdf).
128
+
129
+
#### TCF 2.0
130
+
131
+
If Prebid server determines the user is in GDPR scope, then consent is independently tested
132
+
for each 'Purpose' with different consequences for each:
133
+
134
+
{: .table .table-bordered .table-striped }
135
+
| TCF Purpose | Consequence of Not Obtaining Consent |
| 1 - Device Access | Prevents one or more usersync activities for one or more vendors. |
138
+
| 2 - Basic Ads | May result in skipping one or more bid adapters in the auction. |
139
+
| 4 - Personalized Ads | May result in removing the userIds before calling one or more bid adapters. |
140
+
| 7 - Measure Ad Performance | May result in skipping one or more analytics adapters. |
141
+
| Special Feature 1 - Use precise geolocation data | May result in rounding lat/long values and IP address before sending to server-side adapters. |
142
+
143
+
{: .alert.alert-danger :}
144
+
Note: Support for TCF purposes other than Device Access is still under development and is
145
+
expected to be released in May 2020.
146
+
147
+
More details are available [here](https://docs.google.com/document/d/1fBRaodKifv1pYsWY3ia-9K96VHUjd8kKvxZlOsozm8E/edit#).
148
+
149
+
### COPPA
150
+
151
+
The [Children's Online Privacy Protection Act (COPPA)](https://www.ftc.gov/enforcement/rules/rulemaking-regulatory-reform-proceedings/childrens-online-privacy-protection-rule) is a law in the US which imposes certain requirements on operators of websites or online services directed to children under 13 years of age, and on operators of other websites or online services that have actual knowledge that they are collecting personal information online from a child under 13 years of age.
152
+
If `regs.coppa` is set to '1' on the OpenRTB request, the following anonymization actions take place before going to the adapters:
153
+
154
+
- Removes all ID fields: device.ifa, device.macsha1, device.macmd5, device.dpidsha1, device.dpidmd5, device.didsha1, device.didmd5
155
+
- Truncate ip field - remove lowest 8 bits.
156
+
- Truncate ipv6 field - remove lowest 32 bits.
157
+
- Remove geo.lat, geo.lon. geo.metro, geo.city, and geo.zip
158
+
- Remove user.id, user.buyeruid, user.yob, and user.gender
159
+
160
+
### CCPA / US-Privacy
161
+
162
+
The [California Consumer Privacy Act (CCPA)](https://oag.ca.gov/privacy/ccpa) is a law in the US. which covers consumer rights relating to the access to, deletion of, and sharing of personal information that is collected by businesses.
163
+
The IAB has generalized
164
+
this state-specific rule into a [US Privacy](https://iabtechlab.com/standards/ccpa/) compliance framework.
165
+
If `regs.ext.us_privacy` is parsed to find that the user has opted-out of a "sale",
166
+
the following anonymization steps are taken:
167
+
168
+
- Mask the last byte of the IPv4 address and the last 2 bytes of IPv6 addresses
169
+
- Removes user.id and user.buyeruid
170
+
- Removes the request.device.ifa attribute
171
+
- Rounds the request.device.geo. {lat,lon} to two decimal places
0 commit comments