网页 综合 更新时间 2026-09-09 01:02:19

Web 安全 | MDN

自动蜘蛛 developer.mozilla.org 正文约 3170 字
HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
Learn web development
Get to know MDN better
此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
View in English Always switch to English
网站包含多种不同类型的信息。有些是非敏感信息,例如公共页面上显示的副本。有些是敏感信息,如客户用户名、密码和银行信息,或内部算法和私人产品信息。
敏感信息需要保护,这也是 Web 安全的重点。如果这些信息落入不法分子之手,就可能被用来:
现代浏览器已具备多种特性来保护用户的 Web 安全,但开发人员也需要使用最佳实践并谨慎编写代码,以确保网站安全。即使代码中存在简单的错误,也可能导致漏洞被坏人利用,从而窃取数据并在未经授权的情况下控制服务。
本文介绍了 Web 安全,包括帮助你了解网站漏洞的概念信息和如何确保网站安全的实用指南。
安全和隐私是两个截然不同但又密切相关的主题。值得了解的是两者之间的区别以及它们之间的关系。
安全是保护私人数据和系统免遭未经授权访问的行为。这既包括公司(内部)数据,也包括用户和合作伙伴(外部)数据。
隐私是指让用户控制其数据的收集、存储和使用方式,同时确保数据不会被不负责任地使用。例如,你应该让用户知道你要从他们那里收集哪些数据,将与哪些方面共享这些数据,以及将如何使用这些数据。用户必须有机会同意你的隐私政策,可以访问你存储的数据,如果他们选择删除,也可以删除。
良好的隐私保护离不开良好的安全性。你可以遵循我们的 Web 隐私指南中列出的所有建议,但如果你的网站不安全,攻击者无论如何都能窃取数据,那么诚信行事和制定健全的隐私政策都是徒劳的。
Web 浏览器遵循严格的安全模式,对内容、浏览器与服务器之间的连接以及数据传输实施严格的安全保护。本节将介绍支撑这一模式的特性。
同源策略是 Web 的一种基本安全机制,它限制从一个源加载的文档或脚本如何与另一个源的资源交互。它有助于隔离潜在的恶意文档,减少可能的攻击载体。
一般来说,来自一个源的文档不能向其他源发出请求。这样做是有道理的,因为你不希望网站之间相互干扰并访问未经授权的数据。
不过,在某些情况下,你可能希望放宽这一限制;例如,如果你有多个相互交互的网站,可以允许它们使用 fetch() 相互请求资源。可以使用跨源资源共享(CORS)来允许这样做,这是一种基于 HTTP 标头信息的机制,允许服务器指出浏览器应允许从其加载资源的任何其他源(域、方案或端口)。
Web 浏览器和服务器使用 HTTP 协议相互通信、请求资源、提供响应(例如,提供请求的资源或详细说明请求失败的原因),并为通信提供安全特性。
传输层安全(TLS)通过在网络传输过程中对数据进行加密来提供安全和隐私保护,是 HTTPS 协议背后的技术。TLS 有助于保护隐私,因为它能阻止第三方截获传输数据并恶意使用。
所有浏览器都在逐步要求默认使用 HTTPS;实际上已经是这样了,因为没有这个协议,你就无法在网上做很多事情。
TLS 协议是使两个联网应用程序或设备能够私密、稳健地交换信息的标准。使用 TLS 的应用程序可以选择自己的安全参数,这些参数会对数据的安全性和可靠性产生重大影响。
Strict-Transport-Security HTTP 标头可以让网站指定其只能通过 HTTPS 访问。
证书透明度(CT)是一个开放的框架,旨在防止和监测证书的误发。新颁发的证书被记录到公开运行的、通常是独立的 CT 日志中,这些日志保持着一个仅有附录的、有密码学保证的 TLS 证书的记录。
如果一个 HTTPS 页面包含明文 HTTP 获取的内容,那么该页面就被称为混合内容页面。像这样的页面只能保证部分内容加密,未加密的部分仍然可以被嗅探器和中间人攻击者感知。
浏览器以不同方式控制“强大特性”的使用。这些“强大特性”包括在网站上生成系统通知、使用用户的网络摄像头访问媒体流、操纵系统 GPU 以及使用网络支付。如果网站可以不受限制地使用控制这些功能的 API,那么恶意开发者就可以尝试做以下事情:
仅允许在安全上下文中使用此类特性。安全上下文是 window 或 worker,有理由相信其内容已通过 HTTPS/TLS 安全交付。在安全上下文中,与不安全的上下文进行通信的可能性是有限的。安全上下文还有助于防止中间人攻击者访问强大的功能。
要查看仅在安全上下文中可用的 Web 平台特性列表,请参阅限制在安全上下文中使用的特性。
这些功能的使用受到用户权限系统的限制:用户必须明确选择提供对这些功能的访问权限,这意味着它们不能自动使用。用户权限请求是自动进行的,可以使用权限 API 来查询 API 权限的状态。
其他一些浏览器功能只能在响应用户操作(如点击按钮)时使用,这意味着需要在适当的事件处理程序中调用这些功能。这被称为瞬态激活。更多信息请参阅用户激活特性。
网络安全需要考虑服务器端和客户端的许多方面。本节主要介绍客户端的安全注意事项。你可以在网站安全(我们的服务器端网站编程学习模块的一部分)中找到从服务器端角度出发的安全概要,其中还包括需要注意的常见攻击的说明。
负责任地处理数据主要涉及减少第三方 cookie 的使用,并谨慎对待你存储和与他们共享的数据。传统上,Web 开发人员使用 cookie 来存储各种数据,攻击者很容易利用这种倾向。因此,浏览器已经开始限制跨站 cookie 的使用,目的是在将来完全取消对它们的访问。
你应该通过限制你所依赖的跟踪活动的数量和/或通过以其他方式实现所需信息的持久性,为移除跨站 Cookie 做好准备。更多信息,请参阅从第三方 cookie 过渡和替换第三方 cookie。
在实施涉及数据收集的安全解决方案时,尤其是在数据敏感(如登录凭证)的情况下,使用信誉良好的解决方案是有意义的。例如,任何值得信赖的服务器端框架都会有内置功能来防止常见的漏洞。还可以考虑使用专门的产品来实现你的目的,例如身份提供商解决方案或安全在线调查提供商。
如果你想自己开发收集用户数据的解决方案,请确保你了解所有方面和要求。聘请经验丰富的服务器端开发人员和/或安全工程师来实施系统,并确保对系统进行全面测试。使用多因素身份验证(MFA)提供更好的保护。考虑使用专用 API,如 Web 认证或联合凭证管理来简化应用程序的客户端。
在收集用户登录信息时,使用强密码,这样用户的账户信息就不会轻易被猜到。密码薄弱是造成安全漏洞的主要原因之一。此外,鼓励用户使用密码管理器,这样他们就可以使用更复杂的密码,不必担心记忆密码的问题,也不会因为写下密码而带来安全风险。参见我们关于密码身份验证的文章。
还应向用户宣传有关网络钓鱼的知识。网络钓鱼是指向用户发送信息(例如电子邮件或短信),其中包含一个网站链接,该网站看起来像用户日常使用的网站,但实际上并非如此。链接附带的信息旨在诱骗用户在网站上输入用户名和密码,从而盗取用户名和密码,然后被攻击者用于恶意目的。
备注:有些钓鱼网站可能非常复杂,很难与真实网站区分开来。因此,应教育用户不要轻信电子邮件和短信中的随机链接。如果用户收到类似“紧急情况,需要立即登录以解决问题”的信息,他们应该直接在新标签页中访问该网站,并尝试直接登录,而不是点击信息中的链接。或者,他们可以给你打电话或发电子邮件,讨论他们收到的信息。
访问原文 返回搜索 https://developer.mozilla.org/zh-CN/docs/Web/Security
本页为82搜索生成的网页快照,内容来自站内索引;演示数据的原文链接仅作示例。