跳转到主要内容

标签(标签)

资源精选(342) Go开发(108) Go语言(103) Go(99) angular(82) LLM(75) 大语言模型(63) 人工智能(53) 前端开发(50) LangChain(43) golang(43) 机器学习(39) Go工程师(38) Go程序员(38) Go开发者(36) React(33) Go基础(29) Python(24) Vue(22) Web开发(20) Web技术(19) 精选资源(19) 深度学习(19) Java(18) ChatGTP(17) Cookie(16) android(16) 前端框架(13) JavaScript(13) Next.js(12) 安卓(11) typescript(10) 资料精选(10) NLP(10) 第三方Cookie(9) Redwoodjs(9) LLMOps(9) Go语言中级开发(9) 自然语言处理(9) 聊天机器人(9) PostgreSQL(9) 区块链(9) mlops(9) 安全(9) 全栈开发(8) ChatGPT(8) OpenAI(8) Linux(8) AI(8) GraphQL(8) iOS(8) 软件架构(7) Go语言高级开发(7) AWS(7) C++(7) 数据科学(7) whisper(6) Prisma(6) 隐私保护(6) RAG(6) JSON(6) DevOps(6) 数据可视化(6) wasm(6) 计算机视觉(6) 算法(6) Rust(6) 微服务(6) 隐私沙盒(5) FedCM(5) 语音识别(5) Angular开发(5) 快速应用开发(5) 提示工程(5) Agent(5) LLaMA(5) 低代码开发(5) Go测试(5) gorm(5) REST API(5) 推荐系统(5) WebAssembly(5) GameDev(5) CMS(5) CSS(5) machine-learning(5) 机器人(5) 游戏开发(5) Blockchain(5) Web安全(5) Kotlin(5) 低代码平台(5) 机器学习资源(5) Go资源(5) Nodejs(5) PHP(5) Swift(5) 智能体(4) devin(4) Blitz(4) javascript框架(4) Redwood(4) GDPR(4) 生成式人工智能(4) Angular16(4) Alpaca(4) SAML(4) JWT(4) JSON处理(4) Go并发(4) kafka(4) 移动开发(4) 移动应用(4) security(4) 隐私(4) spring-boot(4) 物联网(4) nextjs(4) 网络安全(4) API(4) Ruby(4) 信息安全(4) flutter(4) 专家智能体(3) Chrome(3) CHIPS(3) 3PC(3) SSE(3) 人工智能软件工程师(3) LLM Agent(3) Remix(3) Ubuntu(3) GPT4All(3) 软件开发(3) 问答系统(3) 开发工具(3) 最佳实践(3) RxJS(3) SSR(3) Node.js(3) Dolly(3) 移动应用开发(3) 编程语言(3) 低代码(3) IAM(3) Web框架(3) CORS(3) 基准测试(3) Go语言数据库开发(3) Oauth2(3) 并发(3) 主题(3) Theme(3) earth(3) nginx(3) 软件工程(3) azure(3) keycloak(3) 生产力工具(3) gpt3(3) 工作流(3) C(3) jupyter(3) 认证(3) prometheus(3) GAN(3) Spring(3) 逆向工程(3) 应用安全(3) Docker(3) Django(3) R(3) .NET(3) 大数据(3) Hacking(3) 渗透测试(3) C++资源(3) Mac(3) 微信小程序(3) Python资源(3) JHipster(3) 大型语言模型(2) 语言模型(2) 可穿戴设备(2) JDK(2) SQL(2) Apache(2) Hashicorp Vault(2) Spring Cloud Vault(2) Go语言Web开发(2) Go测试工程师(2) WebSocket(2) 容器化(2) AES(2) 加密(2) 输入验证(2) ORM(2) Fiber(2) Postgres(2) Gorilla Mux(2) Go数据库开发(2) 模块(2) 泛型(2) 指针(2) HTTP(2) PostgreSQL开发(2) Vault(2) K8s(2) Spring boot(2) R语言(2) 深度学习资源(2) 半监督学习(2) semi-supervised-learning(2) architecture(2) 普罗米修斯(2) 嵌入模型(2) productivity(2) 编码(2) Qt(2) 前端(2) Rust语言(2) NeRF(2) 神经辐射场(2) 元宇宙(2) CPP(2) 数据分析(2) spark(2) 流处理(2) Ionic(2) 人体姿势估计(2) human-pose-estimation(2) 视频处理(2) deep-learning(2) kotlin语言(2) kotlin开发(2) burp(2) Chatbot(2) npm(2) quantum(2) OCR(2) 游戏(2) game(2) 内容管理系统(2) MySQL(2) python-books(2) pentest(2) opengl(2) IDE(2) 漏洞赏金(2) Web(2) 知识图谱(2) PyTorch(2) 数据库(2) reverse-engineering(2) 数据工程(2) swift开发(2) rest(2) robotics(2) ios-animation(2) 知识蒸馏(2) 安卓开发(2) nestjs(2) solidity(2) 爬虫(2) 面试(2) 容器(2) C++精选(2) 人工智能资源(2) Machine Learning(2) 备忘单(2) 编程书籍(2) angular资源(2) 速查表(2) cheatsheets(2) SecOps(2) mlops资源(2) R资源(2) DDD(2) 架构设计模式(2) 量化(2) Hacking资源(2) 强化学习(2) flask(2) 设计(2) 性能(2) Sysadmin(2) 系统管理员(2) Java资源(2) 机器学习精选(2) android资源(2) android-UI(2) Mac资源(2) iOS资源(2) Vue资源(2) flutter资源(2) JavaScript精选(2) JavaScript资源(2) Rust开发(2) deeplearning(2) RAD(2)

category

人们使用网站执行一些重要任务,如银行、购物、娱乐和纳税。在这样做的过程中,他们被要求与这些网站共享个人信息。用户对与其共享数据的网站有一定程度的信任。如果这些信息落入坏人之手,它可能会被用来剥削用户,例如对他们进行剖析,用不需要的广告针对他们,甚至窃取他们的身份或金钱。

现代浏览器已经拥有丰富的功能来保护用户在网络上的隐私,但这还不够。为了创造一个值得信赖和尊重隐私的体验,开发者需要教育他们的网站用户良好的做法(并强制执行)。开发人员还应该创建网站,尽可能少地从用户那里收集数据,负责任地使用数据,并安全地传输和存储数据。

在本文中,我们:

  • 定义隐私和重要的相关术语。
  • 检查自动保护用户隐私的浏览器功能。
  • 看看开发人员可以做些什么来创建尊重隐私的网络内容,最大限度地降低用户的个人信息/数据被第三方意外获取的风险。


定义隐私条款和概念


在我们研究网络上可用的各种隐私和安全功能之前,让我们定义一些重要的术语。

隐私及其与安全的关系


如果不谈论安全性,就很难谈论隐私——它们是密切相关的,如果没有良好的安全性,你就无法真正创建尊重隐私的网站。因此,我们将对两者进行定义。

  • 隐私是指赋予用户控制其数据的收集、存储和使用方式的权利,而不是不负责任地使用数据。例如,您应该向用户清楚地传达您正在收集的数据、将与谁共享以及如何使用这些数据。用户必须有机会同意你的数据使用条款,可以访问你存储的所有数据,如果他们不再希望你拥有这些数据,可以将其删除。你还必须遵守自己的条款:没有什么比以他们从未同意的方式使用和共享他们的数据更能侵蚀用户的信任了。这不仅仅是道德错误;这可能是违法的。世界上许多地方现在都有保护消费者隐私权的立法(例如欧盟的GDPR)。
  • 安全是保护私有数据和系统免受未经授权的访问的行为。这包括公司(内部)数据以及用户和合作伙伴(外部)数据。如果你的安全性很弱,恶意方无论如何都可能窃取他们的数据,那么制定一个强大的隐私政策让你的用户信任你是没有用的。


个人和私人信息


个人信息是描述用户的任何信息。示例包括:

  • 身体属性,如身高、性别表达、体重、发色或年龄
  • 邮政地址、电子邮件地址、电话号码或其他联系信息
  • 护照号码、银行账户、信用卡、社会保险号码或其他官方标识符
  • 健康信息,如病史、过敏或持续状况
  • 用户名和密码
  • 爱好、兴趣或其他个人偏好
  • 指纹或面部识别数据等生物特征数据

私人信息是指用户不希望公开共享且必须保密的任何信息(即,只有特定授权用户组才能访问的信息)。有些私人数据是法律规定的私人数据(例如医疗数据),有些则更多地是个人偏好规定的私人信息。

个人可识别信息


继上一节之后,个人身份信息(PII)是可用于追踪和/或识别特定个人的全部或部分信息。例如,如果一个网站在网上泄露了用户的姓名和邮政编码列表,那么一个坏人几乎肯定会利用这些信息来找到他们的完整地址。即使没有发生全面泄漏,仍然可以通过不太明显的方式识别用户,例如他们使用的浏览器、使用的设备、安装的特定字体等等。

跟踪


跟踪是指记录用户在许多不同网站上的活动的过程。这可以通过多种方式实现,例如:

  • 查看嵌入第三方内容的不同网站上设置的多个第三方cookie,以找出有关用户的各种信息点。
  • 查看Referer标头以查看用户的导航位置。
  • 包括入站链接URL上的参数(例如,链接到产品页面的嵌入式广告或营销电子邮件),这些参数可以向链接网站显示链接的来源、它是什么营销活动的一部分、点击它的用户的电子邮件地址或其他标识符等。此过程被称为链接装饰,并导致链接URL如下所示:https://example.com/article/?id=62yhgt1a&campaign=902.
  • 重定向跟踪,这涉及到跟踪器瞬间(不知不觉)将用户重定向到他们的网站,以使用第一方存储在网站上跟踪该用户。这允许跟踪器绕过被阻止的第三方cookie。例如,如果你阅读了一篇产品评论,想点击购买,你可能会无意中先导航到重定向跟踪器,然后再导航到零售商。这意味着跟踪器作为第一方加载,在将您转发给零售商之前,可以将跟踪数据与他们存储在第一方cookie中的标识符相关联。

跟踪数据可以用来建立用户及其兴趣和偏好的档案,这通常是不好的,并且可能在不同程度上令人讨厌。例如

  • 定向广告:每个人都有过在一台设备上研究一些要购买的商品,然后突然在所有其他设备上被相同产品的广告轰炸的令人不安的经历。
  • 出售或共享数据:众所周知,一些第三方会汇编跟踪数据,然后将其出售给他人/与他人共享,用于各种目的,如定向广告。这显然是非常不道德的,也可能是非法的,具体取决于它在世界何地发生。
  • 数据偏见:在最坏的情况下,共享数据可能会导致用户处于不公平的不利地位。例如,想象一家保险公司发现他们不同意分享的潜在客户的数据点,并将其作为增加保险费的理由。

指纹


与跟踪密切相关的一个过程是指纹识别:这具体指的是通过建立关于用户的数据点存储来识别用户,从而将其与其他用户区分开来。这可能是任何内容,从cookie内容到他们正在使用的浏览器以及他们在本地安装的字体。

现代浏览器采取措施,通过不允许访问信息,或者在必须提供信息的情况下,通过引入变异或“噪音”来防止基于指纹的攻击,从而阻止信息被用于识别目的。

例如,如果网站向用户的浏览器查询经过的时间,则将该时间与服务器报告的时间进行比较可能有助于指纹识别。正因为如此,浏览器通常会给计时器引入少量的可变性,使其对识别用户的系统不那么有用。

注意:有关其他有用信息,请参阅web.dev上的指纹。

浏览器提供的隐私功能


浏览器供应商意识到保护用户隐私的必要性以及跟踪、指纹识别等对用户体验的负面影响。为此,他们实现了各种增强隐私保护和/或减轻威胁的功能。在本节中,我们将了解浏览器自动应用的不同类别的隐私保护。

默认情况下为HTTPS


传输层安全性(TLS)通过在网络传输过程中加密数据来提供安全性和隐私性,是HTTPS协议背后的技术。TLS有利于隐私,因为它可以阻止第三方拦截传输的数据并恶意使用它,例如用于跟踪。

所有浏览器都在默认情况下要求HTTPS;事实上已经是这样了,因为没有这个协议,你就无法在网络上做很多事情。

相关主题如下:

证书透明度
一个用于监视和审核证书的开放标准,创建一个公共日志数据库,用于帮助识别不正确或恶意的证书。

HTTP严格传输安全(HSTS)
服务器使用HSTS来保护自己免受协议降级和cookie劫持攻击,方法是让网站告诉客户端他们只能使用HTTPS与服务器通信。

HTTP/2
虽然HTTP/2在技术上不必使用加密,但大多数浏览器开发人员只有在与HTTPS一起使用时才支持它;因此,在这方面,它可以被认为是增强安全性/隐私性的一个功能。

选择加入“强大功能”

提供对潜在敏感数据和操作的访问的所谓“强大”web API功能仅在安全上下文中可用,这基本上意味着仅限HTTPS。不仅如此,这些网络功能都是在一个用户权限系统后面封闭的。用户必须明确选择允许通知、访问地理位置数据、使浏览器进入全屏模式、从网络摄像头访问媒体流、使用网络支付等功能。

防跟踪技术


浏览器已经实现了一些反跟踪功能,可以自动增强用户的隐私保护。其中许多阻止或限制嵌入<iframe>的第三方网站访问顶级域上设置的cookie、运行跟踪脚本等的能力。

  • Set Cookie标头SameSite属性的默认值已更新为Lax,以提供更好的保护,防止跟踪和CSRF攻击。有关更多信息,请参阅使用SameSite控制第三方cookie。
  • 默认情况下,浏览器都开始屏蔽第三方cookie。请参阅浏览器如何处理第三方cookie?了解更多详细信息。
  • 浏览器正在实施仅在不损害隐私的特定情况下允许第三方cookie的技术,或者以其他方式实施当前需要第三方Cookie的常见用例。请参阅从第三方cookie转换和替换第三方Cookie。
  • 一些浏览器从URL中去掉了已知的跟踪参数,包括Firefox、Safari和Brave。浏览器扩展也有助于做到这一点,例如ClearURL。
  • 浏览器已实现重定向跟踪保护。

客户端开发人员的隐私注意事项


网络开发人员可以也应该采取一些行动来改善用户的隐私。以下部分将讨论最重要的部分。其中一些类别并非纯粹的技术任务,将涉及与其他团队成员的合作。

合乎道德地收集数据


公司出于各种不同的原因从用户那里收集了大量不同的数据:

  • 用于身份验证的用户名、密码、电子邮件等。
  • 用于通信的电子邮件、邮政地址和电话号码。
  • 年龄、性别、地理位置、最喜欢的消遣,以及从网站个性化到客户满意度调查的许多其他PII。
  • 在他们的网站和其他网站上浏览习惯,以衡量页面和功能的成功指标。
  • 还有更多。

在从客户那里收集数据时,你有机会诚实行事,向他们表明你是值得信赖的,并与他们建立良好的关系,从而提高你的品牌和成功的机会。

数据收集的伦理可以分为三个简单的原则:

  • 不要收集超出需要的数据
  • 清楚地传达您将如何使用所收集的数据
  • 完成数据处理后将其删除

注:以下提供的提示有助于获得更好、更注重隐私的用户体验,但其中许多提示是法律要求遵守法规的,
例如欧盟的GDPR。您应该确保了解您所在地区适用的法规,以及您需要做些什么来遵守这些法规。

不要收集超出需要的数据


向用户索取大量数据是很诱人的,因为你认为这些数据在未来可能会有用。然而,你收集的每一点额外数据都会增加用户隐私的风险,并增加他们放弃正在执行的步骤(无论是填写调查还是注册服务)的机会。

匿名化数据是件好事。您还应该考虑是否可以通过降低数据请求的粒度来获得所需内容。例如,您可以要求用户在更通用的类别之间进行选择,而不是询问用户他们最喜欢的产品。

不过,保护用户隐私的最佳方法是尽量减少您收集的数据。参考前面的例子,您可以通过查看用户购买历史来推断相同的数据。作为另一个例子,用户很欣赏能够匿名购买产品。你不应该强迫他们注册一个帐户;如果服务没有必要运行,那应该是他们的选择。

清楚地传达您将如何使用所收集的数据


一旦你决定了要收集的数据,你就应该在你的网站上发布一份隐私政策,明确说明:

  • 您收集的数据
  • 使用数据的方式
  • 您倾向于与之共享数据的各方(如果有的话),以及您将在共享前征求用户同意的声明
  • 删除数据之前保留数据的持续时间
  • 用户可以查看您从他们那里收集的数据并在需要时将其删除的方式

当向您提供数据时,您的用户应该有机会阅读您的隐私政策并同意它。他们应该能够控制自己是否对此感到满意并同意您的条款。如上所述,他们还应该看到你收集了他们的哪些数据,如果他们愿意,可以删除这些数据。

当你发布了你的隐私政策时,你需要确保你遵守它——做你说要做的事情对建立用户信任非常重要。你应该只收集你说要收集的数据,并且只将其用于你说要使用的目的。如果你的公司有人想出了一种聪明的新方法来使用现有数据,根据你的政策条款,如果没有规定你将使用它来达到这个目的,那仍然是不好的。如果用户同意将其数据用于特定目的,并且该目的扩大,您可能需要考虑获得新的同意。

完成数据处理后将其删除


早些时候,我们提到为用户提供一种方式,让他们可以查看你收集了他们的哪些数据,如果他们愿意,可以删除这些数据。你可以这样做,作为他们删除帐户(他们的数据与此相关)的相同体验的一部分,或者让他们有两个单独的选项。无论哪种方式,选项都应该很容易找到。

允许用户选择何时删除大部分数据是非常有力量的,并建立了信任,但可能有一些数据需要您自己处理删除。例如,有些数据可能只使用了几个小时或几分钟,然后就被删除了,比如在用户登录时管理会话时使用的数据。

注意:清除站点数据HTTP响应标头对于清除短时间用户数据非常有用——它指示浏览器清除其缓存和/或cookie和/或存储(例如Web存储或IndexedDB数据)。例如,您可以让服务器将其与“注销确认”页面一起发送,这样一旦用户注销,他们的数据就会被安全删除。

减少跟踪


早些时候,我们讨论了跟踪,以及它被用于的一些不道德的目的。我们不应该详细说明这种使用会如何削弱用户的信任;在任何可能的情况下,您都应该只使用潜在的跟踪机制,如第三方cookie,用于合乎道德的用途,例如跨网站转移登录或其他个性化状态。

还记得早些时候,浏览器都开始默认阻止第三方cookie,同时实现替代技术以实现通用用例。最好通过限制您所依赖的跟踪活动的数量和/或以其他方式实现所需的信息持久性来为此做好准备。有关详细信息,请参阅从第三方cookie转换。

认真管理第三方资源


当然,如果你只担心你创建的资源(代码、cookie、网站等),那么管理隐私就很容易了。真正的挑战来自这样一个事实,即您的网站可能会使用第三方资源。这可以包括嵌入<iframe>的第三方内容、库、框架、API、外部托管资源(如图像和视频)等。

第三方资源是现代网络开发的重要组成部分,它们提供了很大的力量。但是,您允许进入网站的任何第三方资源都可能与您自己的资源具有相同的权限;这完全取决于它在您的网站上的包含方式:

  • 通过<iframe>嵌入网站的第三方内容中运行的JavaScript由同源策略分隔,这意味着它无法访问顶级浏览上下文中包含的其他脚本和数据。
  • 但是,通过<script>元素直接包含在您的页面中的第三方脚本可以访问您的其他脚本和数据,无论它是托管在您的网站上还是托管在其他网站上。这实际上是第一方守则。以这种方式包含的恶意脚本可能会秘密窃取用户的数据,例如将其发送到第三方服务器。

审核您在网站上使用的所有第三方资源非常重要。确保你知道他们收集了什么数据,提出了什么请求,向谁提出了什么要求,以及他们的隐私政策是什么。如果您使用违反隐私政策的第三方脚本,您精心设计的隐私政策将毫无用处。

注意:有各种工具可以帮助您建立网站请求的图片,例如请求映射生成器。

一旦你审计了你的第三方资源并了解了他们在做什么,你就应该考虑他们的负面影响,以换取他们带来的价值。如果第三方脚本是免费的,非常有用,但收集了大量的用户数据,你可以:

  • 接受这种权衡,更新你的隐私政策,包括它的细节,并希望它不会对你的用户的信任产生太大影响。
  • 寻找一种替代的、不那么需要数据的第三方工具。
  • 构建自己的工具。

以下列表提供了一些关于如何降低使用第三方资源固有的隐私风险的提示:

  • 在嵌入第三方资源时,考虑是否有一种方法可以在较少的隐私影响下实现相同或相似的效果。例如,在你的网站上嵌入一个社交媒体帖子查看器可能很有趣,但这真的有必要吗?链接到你的社交媒体页面就足够了吗?此外,一些第三方服务具有增强隐私的选项。例如,请参阅YouTube的嵌入视频和播放列表>打开隐私增强模式。
  • 在可能的情况下,当你向第三方提出请求时,你应该阻止他们接收Referer标头。这可以用一种非常精细的方式来完成,例如在外部链接上包含rel=“noreferrer”。或者,您可以对页面或网站进行更全局的设置,例如使用Referrer Policy标头。

注:另请参阅Referer标题:隐私和安全问题。

  • 使用Permissions-Policy HTTP头控制对API“强大功能”的访问(如通知、地理位置数据、从网络摄像头访问媒体流等)。这对隐私很有用,因为它可以阻止第三方网站使用这些功能做意想不到的事情,而且用户不想被他们可能不理解的权限提示不必要地轰炸。您还可以通过在<iframe>本身的allow属性中指定权限策略来控制嵌入<iframe>element中的第三方网站中“强大功能”的使用。

注意:有关更多信息和示例,请参阅我们的“权限策略”指南,有关包括策略生成器在内的有用工具,请参阅permissionspolicy.com。

  • 使用<iframe>沙箱属性可以允许或不允许使用<ifame>中嵌入的内容中的某些功能——这包括下载、表单提交、模式和脚本。

注意:有关审计等其他有用信息,请参阅web.dev上的第三方。

保护用户数据


你需要确保用户数据在收集后得到安全传输和存储。这更像是一个安全话题,但这里值得一提的是——如果你的安全性松懈,攻击者可以从你那里窃取数据,那么一个好的隐私政策是无用的。

以下提示提供了一些保护用户数据的指导:

  • 安全是很难做到正确的。在实现涉及数据收集的安全解决方案时,特别是在涉及登录凭据等敏感数据的情况下,使用知名提供商提供的信誉良好的解决方案是有意义的。例如,任何值得尊敬的服务器端框架都将具有内置功能,以防止常见漏洞。您也可以考虑使用专门的产品,例如身份提供商解决方案或安全的在线调查提供商。
  • 如果您想推出自己的用户数据收集解决方案,请确保您了解自己在做什么。聘请经验丰富的服务器端开发人员和/或安全工程师来实现系统,并确保对其进行彻底测试。使用多因素身份验证(MFA)提供更好的保护。考虑使用专门的API(如Web身份验证或联合凭据管理)来简化应用程序的客户端。
  • 在收集用户注册信息时,请强制使用强密码,这样用户的帐户详细信息就不会被轻易猜测。弱密码是安全漏洞的主要原因之一。鼓励用户使用密码管理器生成和存储复杂的密码;这样他们就不用担心记住它们,也不用担心写下来会带来安全风险。
  • 不要在URL中包含敏感数据——如果第三方拦截了URL(例如通过Referer标头),他们可能会窃取这些信息。使用POST请求而不是GET请求来避免这种情况。
  • 考虑使用内容安全策略和权限策略等工具在您的网站上强制执行一组功能使用,这会使引入漏洞变得更加困难。这样做时要小心——如果你阻止使用第三方脚本所依赖的功能,你可能会破坏网站的功能。这是您在审核第三方资源时可以查看的内容(请参阅小心管理第三方的资源)。

另请参阅