互动 先见
+ - - - - - -
{{项目。标签}}
的见解

使用GTM查找和防止GA url中的PII

谷歌Analytics (GA)是一个很好的工具,它允许您收集大量数据,并帮助您从中提取有价值的见解。然而,一些进入您的报告的信息可能对您的分析甚至不那么有用损害用户隐私.其中一个例子是个人识别资料

本文解释了如何修改谷歌标签管理器(GTM)中的现有设置,以减轻GA4和Universal Analytics (UA)中的PII。

你们中的许多人都是为了GA4而阅读这篇文章,因为到目前为止,UA的大部分投资都已经完成了。但直到2023年H1*:如果有PII被发送到UA,这将继续是一个关键的热修复或者直到您不再依赖于UA进行生产报告。

*或在最晚的第三季度360物业,基于谷歌的UA弃用时间轴

什么是PII?

PII,或个人可识别信息,是关于用户的信息,可以直接或间接(与其他数据绑定时)将其识别为个人。它是对谷歌的服务条款(TOS)在您的谷歌Analytics帐户中收集有关您的访问者/用户的PII。

所有追踪PII的数据都有被删除的风险。

隐私和开放政府办公室PII定义为:

“可用于区分或追踪个人身份的资料,例如他们的姓名、社会安全号码、生物特征记录等,或与其他与特定个人有关或可与特定个人有关的个人或身份资料结合,例如出生日期和地点、母亲婚前姓氏等。”

PII例子

  • 的名字
  • 电子邮件
  • 物理地址
  • 电话号码
  • Internet协议(IP)地址
  • 护照号码
  • 社会保险号码
  • 驾照号码
  • 财务账户信息
  • 指纹
  • 医疗记录

新的文字-动作

PII如何进入谷歌分析?

PII通常通过URL字符串意外进入GA。

当用户在您的站点上提交表单或使用搜索功能时,提交的数据可能通过在表单提交请求URL的查询参数中追加提交的数据发送到服务器。

如果该提交URL没有被重定向到没有参数的确认页面,那么默认情况下,用户在表单字段中输入的所有内容都将作为pageview URL的一部分在GA中被跟踪。例如:

PII如何进入谷歌分析?

检查您的PII数据

我们建议检查您的UA数据(在未过滤的视图中),以告知需要筛选哪些URL参数。

这个PII报告链接生成器的UA将帮助您从您的UA数据中识别潜在的违规参数,从而为GA4和UA提供屏蔽列表。

为供参考,下面是该模板使用的正则表达式列表*:

*此列表不全面/可能产生假阳性-您应该检查匹配以确认有效性。

PII类别 正则表达式
电话号码-美国 (\ [=,] \ s * + \ s * \ d{1,3}) ?,。+ \ s () * \ d{3}[-、+ \ s)]。* \ d{3}[-、+ \]。* \ d {4 }($|[,;:/?&#])
国际电话号码 \?.*([=:\,!]|% 2 (1 c)) (((\ s +.\,)(-]|% 2 [0 b1c89]) * \ d) {11 \, 15 }($|[&#:\,!%])
物理地址 (\ d + \) ((^ \ [s] *) | (^ \ [s] * \ (^ \ [s] *))) \((圣(reet) ? |大街(自虐)? |博士(ive) ? |(高)? | la ? ? | r (oa) ? d | b (ou) ?勒? v (ar) ? d))
邮政编码 (=) \ d {5} (\ d {4 })?($|[&#,])
电子邮件地址 [^&?#/](@|% 40 )([^&?#/]+)\.
CC -签证/MC [=,] \ s * (\ d {4} [- \ s +] *) {3} \ d {4 }($|[,;:/?&#])
运通卡 [=,] \ s * \ d {4} [- \ s +] * \ d {6} [- \ s +] * \ d {5} [\ s +]*($|[,;:/?&#])
常用参数- password [? &;] (pwd ? |密码)= (^ & #)
常用参数- name [? &;] (u l f | | | |最后完全| | | |用户屏幕)?name = (^ & #)
常用名称- 1 \ b (J (im(我)? ohn | |艾姆斯)罗伯特·| |鲍勃(通过)?迈克尔| | | b (W)困难的?(我)? | Dav (id | e) | | R (D) ic (k |硬)| Ch(陆军研究实验室(es | ie) |厄))\ b
常用名称- 2 玛丽| \ b (Pat (ty | ricia) |琳达| Barb (ara) ? | E ?莉斯(zy | abeth) |詹?(如果)?玛丽亚| | Su (E | san)) \ b
社会保险号(SSN) [=,] \ s * \ d {3} [- \ s +] * \ d {2} [- \ s +] * \ d {4 }($|[,;:/?&#])
IP地址- IPv4 [^ vn] [=,] \ s * ((25 (0 - 5) | 2 [0 - 9] [0 - 4] | [01] ? [0 - 9] [0 - 9] ?) \) {3} (25 (0 - 5) | 2 [0 - 9] [0 - 4] | [01] ? [0 - 9] [0 - 9 ]?)($|[-,;:/?&#])
IP地址- IPv6 [=,] \ s * (() [0-9a-fA-F] {1 4}: {7} [0-9a-fA-F] {1 4} | () [0-9a-fA-F] {1 4}: {1, 7}: | () [0-9a-fA-F] {1 4}: {1,6}: [0-9a-fA-F] {1 4} | () [0-9a-fA-F] {1 4}: {1, 5} (: [0-9a-fA-F] {1 4}) {1,2} | () [0-9a-fA-F] {1 4}: {1 4} (: [0-9a-fA-F] {1 4}) {1,3} | () [0-9a-fA-F] {1 4}: {1,3} (: [0-9a-fA-F] {1 4}) {1 4} | () [0-9a-fA-F] {1 4}: {1,2} (: [0-9a-fA-F] {1 4}) {1, 5} | [0-9a-fA-F] {1 4}: (((0-9a-fA-F) {1 4}) {1,6}) |: (((0-9a-fA-F) {1 4}) {1, 7} |:) | fe80:: [0-9a-fA-F] ({0, 4}) {0, 4} % [0-9a-zA-Z]{1,} |::(飞行符(:0 {1 4}){0,1}:){0,1}(25 (0 - 5)| (2 (0 - 4)| 1 {0,1}[0 - 9]{0,1}[0 -9) \) {3 3} (25 (0 - 5) | (2 (0 - 4) | 1 {0,1} [0 - 9] {0,1} [0 - 9]) | ([0-9a-fA-F] {1 4}:) {1 4}: ((25 (0 - 5) | (2 (0 - 4) | 1 {0,1} [0 - 9] {0,1} [0 - 9]) \) {3 3} (25 (0 - 5) | (2 (0 - 4) | 1 {0,1} [0 - 9] {0,1} [0 - 9 ]))($|[-,;/?&#])

在源头修复PII

如果您在谷歌Analytics报告中看到PII,您应该与负责提交PII的网站或应用程序的维护和功能的IT或web开发团队交谈。

防止这种情况的最好方法是加密与PII一起通过的请求值,或者将它们从url中完全删除。这是一个更可取的解决方案,因为它还保护了数据和保护用户隐私最多。

在许多情况下,最精简和最有效的解决方案之一-如果可能的话-是改变从GET到POST的表单方法

这将把提交的数据作为请求主体中的有效负载发送,而不是在请求URL中。这是一种通用的隐私/安全最佳实践,原因有很多,不仅仅是web分析完整性,因为url在传输、服务器和web上有多种“泄露”的方式。

但很有可能,你需要尽快修复。因此,除非你足够幸运,有足够的资源来快速实现,否则我们建议提交该请求,并同时部署跟踪更新来从数据收集中筛选PII。如果无法从源头加密或删除敏感数据,那么以下方法将是GA(以及通过GTM跟踪的其他pii过敏平台)的合适永久解决方案。

对于属性/处理配置,例如过滤,GA4看起来与通用分析有很大的不同——但无论如何,它们都不适合筛选PII。

即使它在你的报告中被过滤掉了,当PII到达谷歌的服务器时,它已经违反了GA的TOS。这也可能违反违规网站的隐私政策。所以PII筛选必须在跟踪侧进行,我们将向您展示如何使用谷歌标签管理器来防止这些数据传递给谷歌分析。

如何使用GTM从url中删除PII

虽然GA4和UA标签看起来不同,但我们提供的解决方案适用于两者(以及通过GTM跟踪的任何其他平台)。

步骤擦洗PII从url

  1. 选择参数筛选方法:允许或阻止
  2. 用JavaScript清理url
  3. 发送干净数据到GA
  4. 测试和发布

核心逻辑在一个自定义JavaScript变量中,我们可以使用该变量从任何给定的URL中剥离参数。这个JavaScript变量将成为Universal Analytics和GA4的谷歌Analytics配置标签的一部分。

允许参数与阻止参数

首先,您需要决定是使用allowlist方法还是blocklist方法。

和许多人一样,我们已经不再使用“白名单”和“黑名单”这两个词——我们不再把白色与之联系在一起黑色的.在它们的位置上,我们采用了更具包容性的术语:“allowlist”和“blocklist”(匹配GTM的公约).

你选择的方法将决定你如何处理查询参数默认情况下。使用块列表,可以允许所有查询参数通过,但列表上的参数除外。allowlist将以相反的方式工作,默认情况下删除所有参数,除了那些您需要保留并放入列表中的参数。

Allowlist方法

认真考虑默认情况下剥离所有URL参数。这消除了潜在的噪音,并使您专注于确定哪些参数为您的测量策略提供有价值的数据。

使用这种方法,我们使用一个“allowlist”来指定特定的参数作为GA想要获取的唯一参数。在本例中,我们只想确保仍然允许关键的平台参数,如utms、gclid和gbraid。

为了帮助您识别UA数据中的所有参数,您可以使用这个模板来自谷歌

实现allowlist不是你应该匆忙做的事情,因为这将否定所有非指定的参数。所以在发布之前,请咨询所有依赖网络分析的团队,并确保所有对他们重要的参数都包含在允许列表中。

此外,他们应该知道发布日期,因为页面级别的指标可能会在以前被分割到许多报告行的页面上增加。

过滤清单方法

如果时间限制不允许采用allowlist所需的协调,或者您担心没有备份可能会错过使用allowlist的有价值的参数,那么您可以使用blocklist仅删除您指定的参数。

检查您的PII数据有关使用分析数据识别PII参数的提示。

使用自定义JavaScript消毒url

在谷歌标签管理器中,创建一个新的用户定义变量。命名为“Function - Strip Parameters”,并设置类型为自定义Javascript。

您将使用的代码将与您选择的方法相对应。将下面的代码复制到您选择的版本中,并将其放置在名为“Function - Strip Parameters”的自定义JavaScript GTM变量中。

Allowlist代码

函数(){varallowlist =5、例子、允许、自定义参数的+”,utm_content utm_campaign utm_medium、utm_source utm_term, utm_creative_format, utm_marketing_tactic, gbraid, wbraid, gclid, dclid”.split (”、“),replaceWith =//如果为空,阻塞参数将被完全丢弃//否则用此值覆盖。返回函数sanitizeUrl(url){返回url.replace (/((\?)|&)([^#&=]+)(?:=([^#&]*))?/ g函数(关键输入、delim qmark val) {如果-1== allowlist.indexOf(key))返回输入;其他的返回replaceWith吗?delim +键+“=”+替换:qmark||}) .replace (/\?&*$|(\?)&+/“1美元”);

过滤清单代码

函数(){var过滤清单=5、例子、阻塞、自定义,参数个数的.split (”、“),replaceWith =//如果为空,阻塞参数将被完全丢弃//否则用此值覆盖。返回函数sanitizeUrl(url){返回url.replace (/((\?)|&)([^#&=]+)(?:=([^#&]*))?/ g函数(关键输入、delim qmark val) {如果-1=== blocklist.indexOf(key))返回输入;其他的返回replaceWith吗?delim +键+“=”+替换:qmark||}) .replace (/\?&*$|(\?)&+/“1美元”);

此函数用于设置您想要保留(allowlist)或删除(blocklist)的参数,并运行访问URL请求数据并替换其中指定参数的过程。

用您自己的参数键替换代码中的allowlist或blocklist变量中的值,使用逗号作为分隔符,并确保逗号周围没有空格。例如,如果您正在使用blocklist方法,并希望阻止电子邮件,电话和地址参数,您的代码可以如下所示:

使用自定义JavaScript消毒url

请记住,参数键必须与URL中显示的相同。为了使它成为一个不区分大小写的匹配,在第一个正则表达式的末尾添加一个' i ',使它看起来像这样:

/((\?)|&)([^#&=]+)(?:=([^#&]*))?/ gi

如果您希望保留参数并只编校它们的值,可以将replaceWith设置为替换值。例如,如下配置:replaceWith = '[REDACTED]';';将导致一个经过消毒的URL,看起来像这样:

https: // www.seerinteractive.com /感谢吗?提交=一封真实的电子邮件=(修订)

将消毒后的数据发送到GA

现在,我们将创建两个其他变量,它们将利用我们的函数来生成一个经过消毒的URL字符串,并更新GA跟踪配置以使用经过消毒的值。

创建一个自定义Javascript变量“Page URL (Sanitized)”,并将以下代码粘贴进去:

函数(){返回(location.href);}

在这个代码片段中,我们调用了首先定义的函数并传入location。href作为参数,以获得完整页面URL的净化版本。我们将在Universal Analytics和GA4配置设置中使用这个变量。

如果您有自定义跟踪,也需要筛选其他url,您可以使用相同的逻辑。例如,要清除单击URL:

函数(){return ();}

现在,是时候在跟踪配置中使用这些新变量了。

对于GA4

转到GA4配置标签。在“Fields to Set”中,添加新行。

设置“字段名”为“page_location”,值为你的变量。(如果该字段已经定义,则需要将新的参数剥离逻辑与现有的自定义结合起来。)将净化后的数据发送到GA -用于GA4

如果页面url被传递到其他任何地方(即在自定义参数中),你也应该遵循相同的模式来清除这些字段。

通用分析

创建另一个自定义Javascript变量“UA Pageview URL (Sanitized)”,该变量将只用于通用分析配置:

函数(){返回(位置。路径名+ location.search);}

如果你正确地设置了Universal Analytics标签,你应该有一个GA Settings变量,其中包含你的Universal Analytics配置设置。打开这个变量settings,并添加两个“Fields to Set”:

  • 页面=
  • 位置=

将净化后的数据发送到GA - for UA

测试和发布

在GTM调试模式下测试解决方案。

使用allowlist/blocklist代码中包含的URL参数在页面上进行测试,并查看新变量是如何填充的。你应该在默认的Page URL变量中看到你未修改的URL版本,而自定义变量的值是经过消毒的版本:

测试和发布

你还应该检查你的标签,确保它们使用正确的数据启动:测试和发布

在尽职调查中,在发布之前,你可能还想确认任何基于URL参数的配置(即目标配置)在某些参数消失时不会被破坏。

例如,一个表单可能总是附加一些参数:

/联系?电子邮件= rex@example.com&success = 1

如果目标配置寻找“&success=1”,而我们屏蔽了“email”,这个目标配置就会失效。这是因为当电子邮件从URL中删除时,URL将包含“?success=1”。

当匹配url时,永远不要依赖参数顺序!相反,总是使用这个正则表达式:(?&)在参数键之前,以便在任何位置匹配该参数。没有必要逃避?字符,因为它在字符类括号内[]在美国,它被当作一个字面上的问号。例如:[? &]成功= 1 (& | # | $)

如果一切都按预期工作,您就可以自由地发布您的更改。使用GA的实时报告验证您的更改。

最后,无论使用allowlist还是blocklist,维护关于如何操作查询参数的文档是明智的。

UA替代方案:通过自定义任务消毒所有字段

根据您的设置,除了跟踪的URL之外,PII可能会在其他字段中传递。

上面的方法可以应用于任何字段,但是它要求标识每个这样的字段,并显式地使用自己的专用GTM变量进行设置。虽然这是GTM用户最容易使用的方法,因为它只利用了GTM特性,但对于UA来说,还有一种更灵活的选择,可以使用一段代码从所有字段中剥离PII,而且不需要预先识别所有违规字段。

此方法依赖于使用Universal Analytics中提供的customTask API。

简单来说,customTask是在收集数据时的跟踪过程和将数据发送到分析服务器的HTTP请求之间运行的函数之一。它旨在为您提供一种访问和修改请求数据的方法,还允许您修改之后发生的其他标准任务/流程。

而customTask可以在很多有创意的方法,我们将使用它从分析数据收集请求中剥离敏感数据。Brian Clifton有一个很好的实现指南在这里

不幸的是,在GA4中没有对应的自定义任务。

开始

步骤1:下载模板

首先,下载这个包含blocklist和allowlist逻辑的GTM容器,以及GA4的经过净化的URL变量。

下载模板

步骤2:导入到您的GTM

将它导入到你的GTM容器中,并插入到相关的模板标签中:

  • GA4 -在GA4配置标签的“Fields To Set”下,将经过消毒的页面URL映射到“page_location”(如上所示).
  • UA -在GA设置变量的“Fields To Set”下,将经过消毒的页面URL映射到“location”,并将经过消毒的UA Pageview URL变量映射到“page”字段(如上所示).
  • 其他-确定哪些字段跟踪URL及其格式要求,如果需要,为所需格式创建经过消毒的URL变量,并使用经过消毒的URL变量覆盖平台跟踪标记/配置中的违规字段。

步骤3:QA和发行

然后修改“函数-剥离参数”变量剥离违规参数,QA,并发布!

记住,在你选择allowlist之前要确保你没有丢失任何有价值的参数;如果你不确定,默认使用屏蔽列表会更安全。

无论您选择哪种方法,请确保定期监控您的数据隐私合规通过设置自定义GA警报

现在该做什么?

PII审计支持

先知可以帮忙!我们的分析专业知识使您和您的团队能够根据您的数据采取行动。无论您是在寻找一个坚实的基础还是长期的合作伙伴关系,我们都有一个团队来满足您的需求。

查看分析服务

额外的资源

有关使用谷歌标签管理器的更多提示和技巧,请继续阅读:

阅读更多GTM文章


注册我们的时事通讯,在您的收件箱中查看更多类似的文章:

订阅时事通讯

斯蒂芬•哈里斯
斯蒂芬•哈里斯
团队领导,分析
萨沙·赫尔姆斯
萨沙·赫尔姆斯
发展高级助理

我们乐于帮助像您这样的营销人员。

注册我们的通讯,接收更新和更多信息: